Sound length and channel position don't match

Hi, I’m having a weird problem that I cant seem to find the cause of.

Basically I want to play a sound and in an enter fame function compare the length of the song and the current position of the sound channel.

I would expect that when the sound had finished playing that the position of the sound channel would equal the length of the sound but in my trace statement it is less?? This is a problem for me because I’m trying to compare the length and duration. If they equal I know the sound is finished (I’m trying to find a better solution to SOUND_COMPLETE to loop sound)

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.net.URLRequest;

    public class soundTest extends Sprite {
        private var url:String = "test.mp3";
        private var song:SoundChannel;
        public var total;
        public var soundFactory:Sound=new Sound();

        public function soundTest() {
            var request:URLRequest = new URLRequest("test.mp3");
            soundFactory.load(request);
            song = soundFactory.play();
            addEventListener(Event.ENTER_FRAME,enterframe);
        }

        private function enterframe(e:Event) {
            trace("total :"+this.soundFactory.length); //1802
            trace("position :"+song.position);//1625
        }

    }
}

Could somebody help me figure out why the position is always less than the length when the song ends?