> var last = index.high # expect to see 599_999, Why would you expect that, and why would you apply high() on a int value? That never would come to my mind.
Nim has proc overloads, and proc can accept value or type parameters. High() for a seq makes sense of course. But applied on an int value, you expects that high() overload should give you the same as (val - 1)? I think returning the highest possible value makes more sense, but maybe high() should be not defined at all for int values, so that we would have to type high(typeof(myVal)).