      */
     private function eventHandler(event:Event):void
     {
-        end();
+        if (duration >= 0)
+        {
+            // Non-negative duration means we must have started
+            // a tween; let it end normally
+            end();
+        }
+        else
+        {
+            // We didn't start a tween, so finish the effect manually
+            if (eventSource)
+                eventSource.removeEventListener(eventName, eventHandler);
+            finishRepeat();
+        }
     }
 
     /**

     */
    override public function onTweenEnd(value:Object):void 
    {
        super.onTweenEnd(value);
        if (eventSource)
            eventSource.removeEventListener(eventName, eventHandler);
    }
}


            eventSource.addEventListener(eventName, eventHandler);
        }

        if (duration >= 0)
            tween = createTween(this, 0, 0, duration);
    }
    
    //--------------------------------------------------------------------------
