Looking at the documentation I'd say that this feature would require the declaration of the var as 'boolean'. Never mind, knowing this I can work around it.
actually I have to take back what I said. I don't understand what's causing your proc's behavior. I do have this idea in my head that certain parts of OpenACS treat "foo_p" and "foo" as the same, but I can't remember where I read that (apart from the boolean named variables, which is not what is happening in your case).