Mit dem else hätte es allerdings ganz sicher nicht funktioniert
Denn dann wäre ja sofort nachdem die Stopwatch auf 0 zurück gesetzt wurde wieder der else Teil ausgeführt worden - und zwar ständig bis wieder 20000 erreicht gewesen wäre.
Modulo ( % ) 20000 funktioniert nicht sicher - die Stopwatch ist nur für einen kurzen Zeitraum 20000 und ob die If Abfrage dann auch durchgeführt wird weiss man nicht (bei dem kleinen Programm eigentlich schon - aber das ist nicht skalierbar

).
Der Timer läuft ja asynchron zum Programm.
Bei Stopwatches IMMER >= oder <= verwenden.
Tipp: Mach Debug Ausgaben ins Programm --> writeString writeInteger etc. und teste es erstmal ganz OHNE Motoren. Wenn dann das Timing so ist wie Du es gerne hättest, mach die Motorfunktionen mit rein.
(und erstmal 5000 statt 20000 verwenden evtl. )
MfG,
SlyD