here we could also optimize to only step as many steps as needed to get the offset. with *very* long lists that could make a significant difference. but i would propose to do a ticket for that or simply an OPTIMIZE comment like we did elsewhere. not neede for 1.0 and can be done without any BC break and just locally in this class