Hi Deamonata,
Thanks for the reply, I've tried changing the variable type to a number of different ones and nothing seems to change. From http://www.nongnu.org/avr-libc/user-manual/group__avr__stdint.html it looks like int16_t (what's currently being used) is a signed integer.
Since posting this I've tried using the L3G library (https://github.com/pololu/L3G/tree/master/L3G) and that seems to be giving a more reasonable range. (I thought it was -65,535 to 65536, which is a bit strange so I'll check when I get home, I'm probably mistaken).