 			var nextSeg:HLSManifestSegment = getSegmentBySequenceCapped(segments, nextFragmentId);
 			if(nextSeg.id != nextFragmentId)
 			{
+				// Wait for manifest to reload, we probably hit live edge!
+				if(nextSeg.id < nextFragmentId)
+				{
+					return new HTTPStreamRequest(HTTPStreamRequestKind.LIVE_STALL, null, SHORT_LIVE_STALL_DELAY);
+				}
+
 				trace("Out of bounds best effort segment ID request, using " + nextSeg.id + " instead of " + nextFragmentId);
 			}
+
 			_bestEffortFileHandler.segmentId = nextSeg.id;
 			_bestEffortFileHandler.key = getKeyForIndex( nextSeg.id );
 			_bestEffortFileHandler.segmentUri = nextSeg.uri;

			return getManifestForQuality(lastQuality).targetDuration;
		}


		/**
		 * @private
		 * 

				event.downloader);
			dispatchEvent(clone);

			// Is it the next one we want?
			if(getLastSequenceManifest())
			{
				var nextSeg:HLSManifestSegment = getSegmentBySequence(getLastSequenceSegments(), getLastSequence() + 1);
				if(nextSeg)
				{
					var nextUri:String = nextSeg.uri;
					trace("Checking " + event.url + " vs " + nextUri);
					if(event.url == nextUri)
					{
						continueBestEffortFetch(nextUri, event.downloader);
						return;
					}
				}
			}

			// Otherwise skip.
			skipBestEffortFetch(_bestEffortFileHandler.segmentUri, event.downloader);
		}
		
		/**
