Hs,
I can't explain the situation you describe, but I do advise you to use the arguments to the functions you mentioned. All of them can take an alias as an argument and you should use that.
... Whatever
IF EOF("MyAlias")
IF BOF("Someotheralias")
IF RECCOUNT("MyAlias") > 3
IF RECNO("SomethirdAlias") > 16
...
ENDIF
ENDIF
ENDIF
ENDIF
This not only removes any issue due to currently selected alias, but it also make your code much more self documenting.
IMHO, any function that allows the name of the alias to be an argument should always have the alias specified through the argument and not depend on the currently selected alias. This is esspecially true in event driven systems where a later introduction of code in some other area could cause the selected alias to be changed. That code may not even be put in the system by the same programmer.