I was playing around a little more with this today, and the cascading effect I thought I had seen yesterday is gone. The more I think about it, the more I think that I made it up by happenstance. Plus I was really tired. But the persistence is still there.
Whereas Param1() and Param2() always return -1 if P and Q, respectively, are left out of the macro call, Param3() will return whatever value was last used with R. It's even persistant between different macros.