I tested this and have no clue why this is happening.
The thing that caught my curiosity is that sometimes TDebugState.Update fires several times even if I press key once for short time. So if you are lucky you can get two characters to overlap each other for more than 4 pixels even if you are moving it only by 4 pixels each time the TDebugState.Update fires.