           }
           if (bT > oSound.lastValues.bytes) {
             oSound.lastValues.bytes = bT;
+            hasNew = true;
+          }
+          if (bufferLength != oSound.lastValues.bufferLength) {
+            oSound.lastValues.bufferLength = bufferLength;
             hasNew = true;
           }
           if (oSound.loaded != true && nD > 0 && bL == bT) {

      var bT: int = 0;
      var nD: int = 0;
      var nP: int = 0;
      var lP:Number = 0;
      var rP:Number = 0;
      var isBuffering:Object = null;

        if (oSound.useNetstream) {

          // video stream
          bufferLength = oSound.ns.bufferLength;
          bL = oSound.ns.bytesLoaded;
          bT = oSound.ns.bytesTotal || oSound.totalBytes;
          nD = int(oSound.duration || 0); // can sometimes be null with short MP3s? Wack.
          nP = oSound.ns.time * 1000;
          //writeDebug('ns: loaded paused time duration bytesloaded bufferLength: '+oSound.loaded+', '+oSound.paused+', '+(oSound.ns.time*1000)+', '+oSound.duration+', '+oSound.ns.bytesLoaded+', '+oSound.ns.bufferLength);
          if (nP != oSound.lastValues.position) {
            oSound.lastValues.position = nP;
            hasNew = true;
