"Krumme" Werte könnten auch dadurch entstehen, dass der Wert von Tempo beim Addieren irgendwann mal größer als 65535 wird und überläuft (oder analog dazu beim Subtrahieren kleiner wird als 0). Das könntest Du vermeiden, indem Du in den Subroutinen die Addition bzw. Subtraktion nur dann ausführen lässt, wenn Tempo kleiner als 64535 bzw. größer als 1000 ist:

Code:
Schneller:
 If Tempo < 64535 then
 Tempo = Tempo + 1000
 End if
Return

Langsamer:
 If Tempo > 1000 then
 Tempo = Tempo - 1000
 End if
Return
Btw.: Du fragst die Eingangspins nach "1" ab - gehen die Taster denn auch nach (+)? Und hast Du ordentliche PullDown-Widerstände angeschlossen?