If crazy.btm is working in build 40, then the problem is with the rtl (the throw isn't being reliably executed). Still can't reproduce it here, but if the hack works for you then I'm not going to worry about it for now.
I added another kludge for DO to check the file read pointer while inside the DO loops, and abort if it's been set to the end. Not really an ideal solution, but easier than trying to explain to people why a QUIT won't actually terminate a loop.