>> a public var get's hidden is if you pass it by reference into a procedure or function
>
>This is an insidious (and rather silly) bug, and as far as I can see it is the only way how a global var can be masked out of existence (rather than hidden by symbols with the same name that are closer in scope).
>
>I think there was a whole thread devoted to this bug quite recently, but as I am a non-paying parasite the search feature is disabled and I cannot provide a direct link.
It's exactly the same thing (or at least very similar). Look at what happens in the debugger, and pause in the called routine and do a DISPLAY MEMORY from the command window.