If we had a range (x; ...] then x is excluded, but token iterator was initialized with x. The splitting loop would exit prematurely because it would detect that the token is outside the range. The fix is to teach ring_range() to recognize this and always give tokens which are not smaller than the range's lower bound.