OK so this is a bit of a weird issue and I already know the solution, but I am curious about the explanation.
I simplified the following model from a more complex object which tries to update the position of its drawsurrogates in the OnPreDraw event. It calculates a new position and rotation, then sets
box.setLocation( x, y, z, 0, 0.5, 0 ); box.setRotation( 0, 0, 90 - angle );
At low run speeds, this works fine, but if you crank the speed up to, say, 16,000x you will see the animation go all jumpy or the circle become wobbly.
What really surprised me (you won't believe it! read it now!) is: when I swapped the order of the setLocation and setRotation statements, everything works smoothly for me... at all run speeds.
Note that this only works in combination with the setLocation using non-zero factors, so I guess it's related to that... but then I thought that this behavior would maybe change if I changed the centroid property of the boxes which it doesn't seem to.
Here is the demo model to try it out: BoxPreDrawTest.fsm