It's sort of doing this, if we convert it to pseudocode:
from = 1
to = 4
step = 1
idx = from // idx = 1
is idx <= to?
output Index = #idx#
idx += step // idx now = 2
is idx <= to?
output Index = #idx#
idx += step // idx now = 3
is idx <= to?
output Index = #idx#
idx += step // idx now = 4
is idx <= to?
output Index = #idx#
idx += step // idx now = 5
is idx <= to?
// ... no it's not
Index now = #idx# // idx = 5