 			trace("Scheduling reload for quality " + quality);
 			reloadingQuality = quality;
 
+			// Make sure we have knowledge of our current stream.
+			if(!checkAnySegmentKnowledge(getManifestForQuality(lastQuality).segments) 
+				&& !_bestEffortDownloaderMonitor)
+				_pendingBestEffortRequest = initiateBestEffortRequest(uint.MAX_VALUE, lastQuality);
+
 			// Reload the manifest we were given, if we were given a manifest
 			var manToReload:HLSManifestParser = manifest ? manifest : getManifestForQuality(reloadingQuality);
 			reloadingManifest = new HLSManifestParser();

				return pber;
			}

			if (stalled)
			{
				trace("Stalling -- quality[" + quality + "] lastQuality[" + lastQuality + "]");



			var curSegment:HLSManifestSegment = getSegmentBySequence(segments, lastSequence);

			if( segments.length > 0 && lastSequence < segments[0].id)
			{
				trace("Resetting too low sequence" + lastSequence + " to " + segments[0].id);
				lastSequence = segments[0].id;
			}

			if ( curSegment != null ) 
			{
				trace("Getting Next Segment[" + lastSequence + "] StartTime: " + curSegment.startTime + " Continuity: " + curSegment.continuityEra + " URI: " + curSegment.uri);
