Why does Tween stick?

I have a clip that I want to rotate 90deg every 12 seconds. The duration of the tween is 4 secs. I’ve noticed that after a while the clip doesn’t rotate a full 90 degrees, and the whole thing gradually drifts out of the correct angle. If I trace the clip’s rotation it shows 0, 90, 180, -90, etc. for a while then may start throwing out e.g. -106.22701125.

my initial code just added 90deg to the clip’s current rotation value:

[COLOR="Blue"]var timer:Timer=new Timer(12000);
			timer.addEventListener(TimerEvent.TIMER, onTimer);

			function onTimer(evt:TimerEvent):void {
				var rWheel:Tween=new Tween(wheel,"rotation",Regular.easeInOut,wheel.rotation,wheel.rotation+90,4,true);

I swapped this for a fixed rotation value, which corrects the animation if it sticks:

[COLOR="blue"]function onTimer(evt:TimerEvent):void {
				var rWheel:Tween=new Tween(wheel,"rotation",Regular.easeInOut,wheel.rotation,adLoop*90,4,true);
				if (adLoop>3) {

…however the sticking still occurs, and may be related to other events happening on the stage, albeit these are pretty simple mouseOver events and shouldn’t hammer resources.

So, are these issues common to Tween events, and are there any workarounds?