typed my reply at the same time as yours. The reason that it is negative is because the largest value that can be held by an Int is 2147483647 ($7fffffff). When you write a larger value to the Int, the extra bit is written to the sign bit, giving you a negative value. Anything larger than $FFFFFFFF will most likely be truncated to the lowest 32 bits.