Should probably be a 64-bit fixed point value then. Accumulating floating point values is a very common source for drift too...  But I guess it's alright, doubles are pretty big.