You're not "moving your index" to the last one when using last. last will terminate the loop immediately. next will terminate the current iteration, which will cause the condition to be tested again. This may cause the end of the loop, or its "next" iteration, with any side-effects of the guard in effect. redo will restart the current iteration, without any testing of the condition.
I've no idea what prev should do. Rollback the current iteration?