for bit in all_bits:
if bit != lastbit : # input transition
phase_delta = (acc_size/2 - acc)
last_acc = acc
phase_delta_filtered = phase_delta*alpha + phase_delta_filtered*(1-alpha)
integ += phase_delta_filtered
ftw = ftw0 + phase_delta_filtered*Kp + integ * Ki
lastbit = bit
acc = (acc+ftw)%acc_size
if acc < last_acc : # phase accumulator has wrapped around
sampled_bits.append(bit)