I've tried loads of combinations of this.. having the expression in the While loop itself, the original Until statement in the Jedi-SDL version does the same.

All versions I try work when you step through and fail utterly when you don't

I spent a long time banging my head against a brick wall on this.
At first I thought it was being optimized to death.. but even with optimizing turned off, it still fails.

I've tried putting SDL_Delay(1000) in there, nothing.. doesn't even seem to get called. I think Delphi is looking at the code and deciding that there's nothing to do in there and optimizing it out.. but when it steps through in the debugger, it has to follow each line. I dunno, I'm clutching at straws here.