You can change the code yourself, but it doesn't change the behavior. I've
tried every equivalent implementation I can think, and the problem still exists.
for j in 0.. <pcnt: # for each prime r1..sqrt(N)
if nextp[row + j] < uint(Kn): # if 1st mult resgroup is within 'seg'
var k = int(nextp[row + j]) # starting from this resgroup in 'seg'
var ki = k*bprg + byti # convert it to a byte addres in 'seg'
let prime = primes[j] # for this prime
let prmstep = prime * bprg # set number of bytes to next prime
mult
while k < Kn: # for each primenth byte to end of
'seg'
The inexorable conclusion is there is a fundamental bug in the structure of the
language which causes this error to occur. The good thing is now you know it
exists and can find and fix it (remember when the GIMPS folks found a hardware
glitch in Intel chips). You're only at 0.17, so it's good this has been
identified now rather than later. This is a benefit of people using/testing the
language against reference code from other languages.