An L-bit gray-code input value can change by more N bits at a time. The
lower N bits of the input are stored as a received least-significant-bits
(LSB) while the upper bits are stored as a received most-significant-bits
(MSB). A stored register holds the corrected, stored MSB and LSB for use
by the receiver. When the received and stored MSB's mis-match, the new
MSB is stored and the stored LSB is generated so that the stored register
contains the smallest possible value with the new MSB. When the received
and stored MSB's match, the full L bits are compared. When the received
word is larger than the stored word, the largest mis-matching bit in the
LSB is found, and bits above this are copied from the received LSB to the
stored register, while lower bits are generated to produce the lowest
value. Repeating the process converges the result.