As discussed in the comments, the problem is where you've left the cursor. For example:
goldilocks@home> echo -n 1234; echo -ne "\r56"
What happened is the first
echo wrote "1234", then the second echo went back to the beginning of the line and printed "56" and exited. The cursor remained after the 6, and the next thing that happened is the shell printed the command prompt, overwriting "34". If you included a newline in the second echo (or removed the
-n switch, so that echo will print a newline automatically), you would get:
goldilocks@home> echo -n 1234; echo -e "\r56"
The cursor moved down a line, leaving the "34" behind.