Looking at the code a little, it might be possible that you have unconfirmed transactions. Did you delete all the transactions in the wallet before rescanning?
If it is not that, then I'm lost.
I do not, the balance reported by "getbalance '*' 1" is much bigger than what getbalance reports (the calls should theoretically be equivalent), that means the transactions counted have at least one conf.
It's logical that "getbalance '*' 0" reports a bigger balance than "getbalance '*' 1" though.
Update it, and rescan for transactions. If that doesn't work try using a new wallet all together
Update is irrelevant, rescan was done long before I even thought about posting on the forums, using a new wallet implies that I can transfer the coins which the client won't let me do since it will check what I try to send against getbalance (it won't let me transfer all the coins)