 		 */
 		private function keepBufferFed():void
 		{
+			updateBufferTime();
+
 			// Check the actual amount of content present.
-			if(super.bufferLength >= bufferFeedMin)
+			if(super.bufferLength >= bufferFeedMin && !_wasBufferEmptied)
 			{
 				return;
 			}


			// Append tag bytes until we've hit our time buffer goal.
			var curTagOffset:int = 0;
			while(super.bufferLength <= (bufferFeedMin + bufferFeedAmount)
			      && (pendingTags.length - curTagOffset) > 0)
			{
				// Append some tags, using utility function to ensure we get tags

					if (_seekTime < 0)
						_seekTime = currentTime;

					// Update initial time with time of tag.
					if(isNaN(_initialTime))
						_initialTime = currentTime;

