 					// stop if no more entries
 					if (remaining == 0)
 						break;
-					
-					// reset elapsed counter for next time
-					// if we went overtime, let the overflow value carry over
-					pElapsed = Math.max(0, pElapsed - pAlloc);
-					_priorityElapsedTimes[_activePriority] = pElapsed;
 					
 					// switch to next priority
 					_activePriority++;

				now = getTimer();
				if (countdown == 0 || now > pStop)
				{
					// keep track of elapsed time for this priority
					pElapsed += now - pStart;
					_priorityElapsedTimes[_activePriority] = pElapsed;
					
					// if max computation time was reached for this frame or we have visited all priorities, stop now
					if (now > allStop || _activePriority == lastPriority)

			var pStart:int = getTimer();
			var pAlloc:int = int(_priorityAllocatedTimes[_activePriority]);
			var pElapsed:int = int(_priorityElapsedTimes[_activePriority]);
			var pStop:int = Math.min(allStop, pStart + pAlloc - pElapsed); // account for overtime from previous frame
			queue = _priorityCallLaterQueues[_activePriority] as Array;
			countdown = queue.length;
			while (true)
