Just designed and tested an algorithm to build a reverse-iterator on top of an iterator that can only run in forwards direction (part of the #musl collation project) and it seems to be good!
63 underlying forward-iterate steps to perform 21 reverse-iterate steps in simple test case.