Inter aural time difference generation using sine waves
I understand the point.
If you are outputting signal[i] you cant jump to signal[i+n] instantaneously.
You should just fade it to the new point with some window function. Allow some period of fading time.

For example: If I currently output signal[i] and I want to shift it to signal[i+n] in 1 second. I will use half of Hann window to fade it in and out. So I time scaling Hann from pi to 1 second.
and output $signal[i+n]*Hann[i]+signal[i]*(1-Hann[i])$ for 1 second before I switch to signal[i+n] at full scale. This should not generate a click.

You may want to try other window function or different fading period.