... var heading; while (TRUE) { if (moving) { heading = (get HEADING) + 32768; sleep ANIM_SPEED; heading = ((get HEADING) + 32768) - heading; // 0 to 65536 instead of -32768 to 32767 if (heading != 0) { // Adding angle over time angle = angle + heading; // Reset angle when the direction changes if ((heading > 0 AND angle < 0) OR (heading < 0 AND angle > 0)) { angle = 0; } if (angle > 0) { turn wheel3 to y-axis get MIN(angle,<15>) speed <240>; turn wheel4 to y-axis get MIN(angle,<15>) speed <240>; turn wheel5 to y-axis get MIN(angle,<45>) speed <240>; turn wheel6 to y-axis get MIN(angle,<45>) speed <240>; } else if (angle < 0) { turn wheel3 to y-axis get MAX(angle,<-15>) speed <240>; turn wheel4 to y-axis get MAX(angle,<-15>) speed <240>; turn wheel5 to y-axis get MAX(angle,<-45>) speed <240>; turn wheel6 to y-axis get MAX(angle,<-45>) speed <240>; } // Goes straigth else { turn wheel3 to y-axis 0 speed <240>; turn wheel4 to y-axis 0 speed <240>; turn wheel5 to y-axis 0 speed <240>; turn wheel6 to y-axis 0 speed <240>; } // Only a quarter is preserved for the next iteration angle = angle/4; } // No change in direction, goes straight else { angle = 0; turn wheel3 to y-axis 0 speed <240>; turn wheel4 to y-axis 0 speed <240>; turn wheel5 to y-axis 0 speed <240>; turn wheel6 to y-axis 0 speed <240>; } } else { sleep ANIM_SPEED * 4; } } ...