 						}
 						else
 						{
-							return initiateBestEffortRequest(getLastSequence() + 1, origQuality, segments, manifest);
+							// Check if we're seeking backwards...
+							var beSeg:HLSManifestSegment = getSegmentContainingTime(segments, time);
+							trace("getFileForTime - (B) found " + beSeg + " for time " + time);
+							if(beSeg)
+								return initiateBestEffortRequest(beSeg.id, origQuality, segments, manifest);
+							else
+								return initiateBestEffortRequest(getLastSequence() + 1, origQuality, segments, manifest);
 						}
 					}
 				}

				return new HTTPStreamRequest(HTTPStreamRequestKind.LIVE_STALL, null, 2);
			}

			// Advance sequence number.
			newSequence++;

			var segments:Vector.<HLSManifestSegment> = currentManifest.segments;


			}

			// If no old manifest, it's a new play session.
			var didWeSeedLastSequence:Boolean = false;
			if(oldManifest == null)
			{
				trace("SEEDING LAST SEQUENCE");
				didWeSeedLastSequence = true;

				if(currentManifest.streamEnds == true)
				{
					updateLastSequence(currentManifest, 0);
				}
				else
				{
					updateLastSequence(currentManifest, 
						currentManifest.segments[Math.max(0, 
							currentManifest.segments.length - HLSManifestParser.MAX_SEG_BUFFER - 1)].id);
				}
			}

