Lo-Fi Crusher

Type : Quantizer / Decimator with smooth control
References : Posted by David Lowenfels
Notes :
Yet another bitcrusher algorithm. But this one has smooth parameter control.

Normfreq goes from 0 to 1.0; (freq/samplerate)
Input is assumed to be between 0 and 1.
Output gain is greater than unity when bits < 1.0;
Code :
function output = crusher( input, normfreq, bits );
    step = 1/2^(bits);
    phasor = 0;
    last = 0;

    for i = 1:length(input)
       phasor = phasor + normfreq;
       if (phasor >= 1.0)
          phasor = phasor - 1.0;
          last = step * floor( input(i)/step + 0.5 ); %quantize
       end
       output(i) = last; %sample and hold
    end
end

Comments
from : kk791231[AT]hotmail[DOT]com
comment : what's the "bits" here? I tried to run the code, it seems it's a dead loop here, can not figure out why

from : dfl
comment : bits goes from 1 to 16

from : 2SenseEntertainment[AT]gmail[DOT]com
comment : I'm having trouble with the code as well. Is there something I'm missing?