 			}
 
 			// Add to the queue, marking if we need to resort.
-			if(pendingTags.length > 0 
+			if(!needPendingSort 
+				&& pendingTags.length > 0 
 				&& (wrapTagTimestampToFLVTimestamp(tag.timestamp) 
 					- wrapTagTimestampToFLVTimestamp(pendingTags[pendingTags.length-1].timestamp)) <= 0)
 			{

		private var bufferFeedMin:Number = 1.0; // How many seconds to actually keep fed into the native buffer.
		private var bufferFeedAmount:Number = 0.1; // How many seconds of data to feed when we feed.
		private var scanningForIFrame:Boolean = false; // When true, we are scanning video tags until we hit a keyframe/I-frame.
		private var bufferParser:FLVParser = new FLVParser(false); // Used to parse incoming FLV stream to buffer. TODO: Refactor to be unnecessary.
		private var needPendingSort:Boolean = false; // Set when we detect a new tag that's not after the last one, to save on resorts.
		private var endAfterPending:Boolean = false;

						i++;
					}

					// Did we write the whole buffer? Then clue the decoder that we're probably jumping time.
					if(pendingTags.length == 0)
					{
						CONFIG::LOGGING
