Yes you are right. When we decode *0.66*, we first identify that in the start interval *[0.0,1.0]*, it belongs to **B**'s sub-interval *[0.6,0.8]* (see first line in figure). Then in the interval *[0.6,0.8]*, we identify that encoding *0.66* belongs to **A**'s sub-interval *[0.6,0.72]* (second line in figure). Then in the interval *[0.6,0.72]*, we narrow down *0.66* to **A**'s sub-interval *[0.6,0.672]* (third line in figure). Continuing similarly, in the interval *[0.6,0.672]*, encoding *0.66* belongs to **C**'s sub-interval *[0.6576,0.672]* (fourth line in figure). As you can see, we may continue decoding like this forever since the number *0.66* will always belong to one of the sub-intervals.

It is therefore necessary to inform the decoder when to stop. This can be done in a few ways. One way would be to use a special symbol as end-of-data. For instance, if symbol **C** is used in the above example to indicate end-of-data, the decoded word would be **BAAC**. Another way would be to specify total number of symbols in the word. For instance, if total number of symbols is specified as *5* in the above example, then the decoded word would be **BAACA**. In this case, there would be a fifth line in the above figure indicating that in the interval *[0.6576,0.672]*, the encoding *0.66* belongs to **A**'s sub-interval *[0.6576,0.66624]*.