 		 */
 		private const _priorityCallLaterQueues:Array = [[], [], [], []];
 		private var _activePriority:uint = WeaveAPI.TASK_PRIORITY_IMMEDIATE + 1; // task priority that is currently being processed
-		private const _priorityElapsedTimes:Array = [0, 0, 0, 0]; // An Array of elapsed times corresponding to callLater queues.
+		private var _activePriorityElapsedTime:uint = 0; // elapsed time for active task priority
 		private const _priorityAllocatedTimes:Array = [int.MAX_VALUE, 100, 65, 35]; // An Array of allocated times corresponding to callLater queues.
 
 		/**

					if (remaining == 0)
						break;
					
					// switch to next priority
					_activePriority++;
					if (_activePriority == _priorityCallLaterQueues.length)
						_activePriority = minPriority;
					pStart = now;
					pAlloc = int(_priorityAllocatedTimes[_activePriority]);
					pElapsed = int(_priorityElapsedTimes[_activePriority]);
					pStop = Math.min(allStop, pStart + pAlloc - pElapsed);
					queue = _priorityCallLaterQueues[_activePriority] as Array;
					countdown = queue.length;
					

				now = getTimer();
				if (countdown == 0 || now > pStop)
				{
					// add the time we just spent on this priority
					_activePriorityElapsedTime += now - pStart;
					
					// if max computation time was reached for this frame or we have visited all priorities, stop now
					if (now > allStop || _activePriority == lastPriority)
