Since both Lua strings and alien buffers use 1-based counting, it seems simpler (if, to my mind, unfortunate) to use 1-based counting throughout Zile for strings.
Although all the tests pass, I suspect several off-by-one bugs remain to be uncovered. In a way, I view this as a good thing: as they're uncovered we'll have to add more regression tests.