 						potentials.push(cue);
 					}
 				}
-
-				if(potentials.length > 0)
+			}
+
+			if(potentials.length > 0)
+			{
+				// TODO: Add support for trackid
+				cue = potentials[potentials.length - 1];
+				if(cue != _lastCue)
 				{
-					// TODO: Add support for trackid
-					cue = potentials[potentials.length - 1];
-					if(cue != _lastCue)
-					{
-						dispatchEvent(new SubtitleEvent(cue.startTime, cue.text, language));
-
-						_lastInjectedSubtitleTime = cue.startTime;
-						_lastCue = cue;						
-					}
+					dispatchEvent(new SubtitleEvent(cue.startTime, cue.text, language));
+
+					_lastInjectedSubtitleTime = cue.startTime;
+					_lastCue = cue;						
 				}
 			}
+
+			// Force last time so we eventually show proper subtitles.
+			_lastInjectedSubtitleTime = endTime;
+
 		}
 
 		/**

		
		public function set language( value:String ):void
		{
			// Trigger a seek to flush buffer and get proper language.
			if(_language != value)
			{
				_language = value;

				trace("Triggering flush for proper subtitle language.");
				if(owningMediaElement)
				{
					var st:SeekTrait = owningMediaElement.getTrait(MediaTraitType.SEEK) as SeekTrait;
					var tt:TimeTrait = owningMediaElement.getTrait(MediaTraitType.TIME) as TimeTrait;
					
					if(st == null)
					{
						trace("   o No seek trait, skipping...");
					}

					if(tt == null)
					{
						trace("   o No time trait, skipping...");
					}

					if(st != null && tt != null)
					{
						trace("   o Initiating seek to " + tt.currentTime);
						//st.seek(tt.currentTime);
					}
				}
				else
				{
					trace("   o No media element, skipping...");
				}
			}
		}
		
		public function get language():String

				if ( subtitle.endTime < startTime ) continue;
				var cues:Vector.<TextTrackCue> = subtitle.textTrackCues;
				var cueCount:int = cues.length;

				for ( var j:int = 0; j < cueCount; j++ )
				{
