In all seriousness though, what's wrong with :
IF BOF() OR EOF()
THIS.TOPFILE = .T.
ENDIF
or
IF (BOF() OR EOF())
THIS.TOPFILE = .T.
ENDIF
I think that final "OR THIS.TOPFILE" to retain the value of THIS.TOPFILE in the event of not being at top or bottom of the file leads to confusion if you're not familiar with that type of construct.
Part of my work involves programming PLCs with ladder logic, where it is common to use the equivalent structure to ensure an output stays on regardless of what happened to the inputs that set it in the first place. But I've found that when I translate that to C (or Foxpro), it does confuse people, so I tend to use the above.
Len Speed