Video amount played more than amount loaded?

So I have been having a serious issue with custom video where flash is saying that the amount of the video so far played is MORE than the amount that it has downloaded, which is clearly impossible. This results in various problems, such as the playhead (scrubber) moving past the end of the loader bar.

I posted a simple demo that displays the amount loaded and the amount played in text fields. You can see it at:
http://www.fisheyemedia.net/test/videotest.html

Here is the code:


var video:Video = new Video(320, 240);addChild(video);
var vidDur:Number;
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
var meta:Object = new Object();
meta.onMetaData = function(meta:Object) {
    vidDur = meta.duration;
}
ns.client = meta;
video.attachNetStream(ns);
ns.play("testBIG.flv");

function displayInfo (e) {
    tfPlayed.text = (ns.time).toFixed(1)
    tfLoaded.text = (ns.bytesLoaded/ns.bytesTotal*vidDur).toFixed(1);
}
var updateInterval:Timer = new Timer (30,0);
updateInterval.addEventListener(TimerEvent.TIMER, displayInfo);
updateInterval.start();

I encoded the video at a high rate so that it would download slowly. It may not playback smoothly, which I am not concerned about. What I am concerned about is the numbers below the video what are derived from ns.bytesLoaded and ns.time. If you watch it for a bit, the amount played should exceed the amount loaded.

I double checked the video duration and the bytestotal that flash is reporting and they are correct. I don’t know of any way to check the accuracy of bytesloaded.

If your internet connection is super fast, you may not see the issue - it only occurs when it is playing back faster than it is downloading - if this is the case, you may need to throttle your speed down, or start downloading a large file while you are watching this demo in order to see the issue.

But this is a serious issue and means that building custom video interfaces with loadbars and playheads is impossible! Maybe there is a stupid mistake in my code, or I am missing something obvious, but I would appreciate any thoughts.