All variables involved are size_t i.e. unsigned. Thus the original code makes steps
0, 1, 2, ..., N-1, 0 ,1 ,2, ...
as intended - while the proposed fix would skip initial step 0 and produce
1, 2, 3, ..., N-1, 0, 1, 2, ...

Still while the original code is neat and tight, the module op is costly and potentially fast forwards through some indices when size_t wraps over etc

Will change.