Parece ser simplemente un problema de los números flotantes (en JavaScript todos los números son flotantes de 64 bits, pero para las operaciones con enteros se aplica automáticamente un algoritmo de corrección). Fíjate en
este artículo; una posible solución a tu problema, la puedes encontrár
aquí. ¡Suerte!