Ok, being a programmer, I generally assume I can mess with loop variables to control a loop.
But I am quite certain at this point that M&B's (try_for_range, ":index", ":start", ":one_past_end") construct overwrites ":index" on every iteration, so you cannot break out of the loop by setting its value to past the end, nor can your force it to loop over the same index a second time by subtracting one from it, &c.
But what does work is messing with the termination value ":one_past_end". If you reset this to a lower number, say set it to ":index", then you force the loop to stop.
This is far less useful than being able to mess with ":index", but this appears to be another limitation of their engine.
Make a note of this, and avoid bugs 
G/L
This is true, but you
can change the value of ":index" while inside an iteration, and you can use a variable or script that isn't ":index" (but may or may not take its value from ":index") inside the loop, which will not reset with each iteration. You can also keep the loop going as long as you need it to by increasing ":one_past_end". So, if as you say you want to loop over an index again, use a different variable from ":index" for determining which value to use.
For example:
(assign,":low",0),
(assign,":high",1),
(assign,":index",0),
(try_for_range,":range",":low",":high"),
-use ":index" here-
-THEN-
(val_add,":index",1),
(val_add,":high",1),
(try_begin),
(eq,":example",":repeat_last"), # If you want to repeat the previous index
(val_sub,":index",-2), # Repeat previous index
(else_try),
(eq,":end",":now"), # If end is now
(assign,":high",":range"), # End loop
(try_end),
(try_end),
Regards,
Ryan