I just found out that the way I've written the movement routine, the detectors don't work in time, if a cursor key is held down.
If you approach the obstacle carefully, keystroke by keystroke, then it's ok. If you approach it holding down a cursor key, the character ends up inside the obstacle and THEN stops moving.

Dammit. It seemed like an elegant solution. Can anyone have a look at my code? It's twice this day i've troubled the forums, thank you people...
download