ARB_VERTEX_PROGRAM

I have an ATI radeon 9800 PRO, i wrote several vertex programs and I noticed something strange.
it seems that when using program local or env params, sometimes those params are overwritten by other GL state values.
I noticed this since changing the location of the param (its index value) sometimes produces garbage on the screen. After a lot of testing, i realized that, depending on the call sequence, either the GL state params, like mvp matrix, etc …or the program params overwrite each other … sometimes i get correct values for the params and incorrect values of GL state params, and sometimes it is the other way around.
Now, I am not sure if this behavoiur is due to me writing data at index values that are reserved (mapping wise), but i found nothing in the documentation to support that.
my other guess is, ATI drivers are messing up where the data should be stored on the GPU constant registers.
did anyone have the same problem ?