Man, that is a bit wierd, I would call it a bug. Dont know if it can be fixed as its more like its a bug in the logic rather than code. Who knows.
I can see whats happening, but you just wouldnt have expected it to not work.
As you said $1being 00 is seen as true and !$1 becomes 1 which is also true.

* a fix, But hey whoes gonna ever remeber to put this in, and it screws up the $v1 values *
IF !$(!$1) echo -a $1 is true | IF !$1 echo-a Not $1 is true