I know this problem, and I have a work around...
If you declare your type, for example; as a boolean, it will not work.
If you simply leave your types undeclared they are considered integer types and work perfectly (well, they have in my case), however, any types declared as boolean or float etc., don't work.
Obviously, if you need to test against types using floats you are screwed
So..
Dog(1).Pos.X as float // This doesn't work in if conditions
Dog(1).Pos.X // This works fine in if conditions
AsylumHunter
still falling out of my binary tree most evenings (hicup!)