The command `Do[Print[i],{i,1,3}]` does what you expect: creates 3 output lines of `1`, `2` and `3`, in that order. If one merges these output cells, then evaluates the original `Do` command, the output is now `3`, then `2`, then `1`. When one deletes the output cells, the regular behavior returns. It isn't that the `Do` loop is running backwards. When one does "the same thing" with temp={} Do[AppendTo[temp,i]; Print[i],{i,1,3}]; temp the order of the `Print` command is reversed, but the contents of `temp` are still `{1,2,3}`, not `{3,2,1}`. Why does this happen? Does `Print` write to a queue that is sometimes dumped in reverse order?