Alternate solution to #589 (closed) that doesn't use 64-bit numbers, but does invoke more calculations. I'm not sure which is better.