If the "IF" statement is true then the program winds up going back to "MAIN". Does the program think it is still nested in a subroutine?
yes... but in this case why not changing you if then goto to a if then gosub... that will fix it.

but in case you don't want to do what is next t your if then, i suggest you to set a flag to avoid this.. something like
Code:
VoidStatementsNextToIF = 0
Main:
     do this 
     do that
     gosub here
     goto main

Here:
     if do_dat_squat then Gosub There
     IF VoidStatementsNextToIF=0 then 
          do this 
          do that
     endif
     VoidStatementsNextToIF = 0
return

There:
     VoidStatementsNextToIF = 1
     do this
     do that
     Return