 						_looped.execute(this);
 					else
 					{
-						_currentTime = deltaT > 0 ? _loopEndTime : 0;
+						if (_reverse)
+							_currentTime = deltaT < 0 ? loopEndTime : 0;
+						else
+							_currentTime = deltaT > 0 ? loopEndTime : 0;
 						stop();
 						
 						return true;

			
			_isPlaying = false;
			_updateOneTime 	= true;
			_lastTime = _timeFunction != null ? _timeFunction(getTimer()) : getTimer();
			_stopped.execute(this);
			
			return this;

			
			if (newTime < previousTime)
			{
				if (previousTime < nextLabelTime && nextLabelTime <= loopEndTime)
					trigger = true;
				else if (loopBeginTime <= nextLabelTime && nextLabelTime <= newTime)
					trigger = true;
			}
			else
