Your code is great! I added PAUSE 7 in line 100 to keep it playable. In Fact ZAP and UFO where the first working game ever to compile I am still testing and fixing bugs, thanks for publishing you BASIC source codes.
tquester/ZXBasicCompiler: ZXBasic Compiler
I am really impressed what can be done in BASIC. Compiled the games not only gain speed and need a PAUSE to be playable but they also become more responsive.
I do not know how MCoder III is working, but maybe compilers do not like GOSUB f, because in compiled code, there are no line numbers. My compiler creates a symbol table if any GOTO, GOSUB or RESTORE is not a constant and calls a function to find the line and address, some games computed goto and restore for Menus or level loading.