A side note; the reason this bites you is that we use "long long", which is an explicit violation of the C standard. Why do we do this? Because a lot of old code depends on "long" not being that large, and on it being a native (thus efficient) type. -s