anchor.diff:          if PAnsiChar(fDest) + fUnpackedSize >= PAnsiChar(Run) then
             break;  //decoded all the blocks already
         end;
  -    end;
  -  end;
  +    end; //loop over all the color components
  +    inc(BlockNum);
  +  end; //loop until we read all the blocks
   end;
   
   procedure TJPEGDecoder.DecodeDNL;
  
positive.code:     inc(fInterleavedBlockSize, fColorComponents[i].SampleCount * fBytesPerSample);
    end;
    fRowSize := X * fInterleavedBlockSize;
  
  
    //here we begin scans
  
negative.code:         //OK, spectrum is almost ready
  
          for i := 63 downto 0 do
            Buffer[ZigZag1D[i]] := ZZ[i] * Quant^[i];
  
          for i := 0 to 63 do
            if (i mod 8) <> 0 then
              Buffer[i] := 0;
  
          //ok, now it's in right order (row after row) and scaled back.
          //still don't trust it too much...
          IDCT(Buffer);
  
          for i := 0 to 63 do
            Buffer[i] := Buffer[i] / 8;
  
          i := 0;
          //and at least, divide by 8, add 128 or 2048 and scale appropriately
  