 
 			if (!isNaN(_enhancedSeekTarget))
 			{
-				if (currentTime < _enhancedSeekTarget)
+				// Note if we have encountered an I-frame.
+				if(isTagIFrame(tag as FLVTagVideo))
+					_enhancedSeekSawIFrame = true;
+
+				if (currentTime < _enhancedSeekTarget || (_enhancedSeekTags != null && _enhancedSeekSawIFrame == false))
 				{
 					CONFIG::LOGGING
 					{

			// we can't seek before the playback starts or if it has stopped.
			if (_state != HTTPStreamingState.INIT)
			{
				_seekTarget = convertWindowTimeToAbsoluteTime(offset);

				CONFIG::LOGGING
				{


				var tagTimeSeconds:Number = wrapTagTimestampToFLVTimestamp(tag.timestamp) / 1000;

				if (isNaN(_initialTime))
					_initialTime = tagTimeSeconds;

				// If it's more than 0.5 second jump ahead of current playhead, insert a RESET_SEEK so we won't stall forever.
				var tagDelta:Number = Math.abs(tagTimeSeconds - lastWrittenTime);

