 				g_frameEventDispatcher.addEventListener(
 					Event.ENTER_FRAME, executeTick);
 				m_isExecuting = true;
-				m_startTime = getTimer() + m_currentTime;
+				m_startTime = m_lastFrameTime = getTimer() + m_currentTime;
+				m_timeAdjust = 0;
 				dispatchEvent(new TweenEvent(TweenEvent.START, true));
 				if (executeFirstTickImmediately)
 				{

			}
			
			m_delay = delay;
			
			m_currentTime = 0;
			m_direction = DIRECTION_FORWARD;

		 */
		protected function executeTick(event : Event = null) : void
		{
			var time : int = getTimer();
			if (m_preventFrameDropping)
			{
				if (time - m_lastFrameTime > m_frameDuration)
				{
					m_timeAdjust += time - m_lastFrameTime - m_frameDuration;
				}
				m_lastFrameTime = time;
			}
			m_currentTime = time - m_startTime - m_timeAdjust - m_delay;
			if (m_currentTime < 0)
			{
				return;
