@luma: sorry, wenn die Antwort vorher zu kurz war!
in der Funktion int Chirp(unsigned char flag). Die Zeile durch die 0.5 erweitern und der Rundungsfehler ist dann von 0,9 unentlich periode nur noch 0,5.
Die Zeile sollten, wenn ich mich nicht irre, so ausehen.
dist = (unsigned int) (((long) ((344L * ((sleeptime * 1000L) / 72L) / 10000L) / 2L))+0.5);

Durch die Cast Operation (unsigned int) wird knallhard die Kommerstelle abgeschnitten.