Got it compiling but not without MSVC getting quite upset about possible loss of data

    warning C4244: '=' : conversion from 'uint64_t' to 'int', possible loss of data

Is there any way you know to make `accumulate` use `uint64_t` ? It seems to work nicely, however, so I'm happy to merge as is.