fixed off by one error in index end calculation
Note, this could also likely be:
return Index( array_size, _num_soa+1, 0);
or similar as you prefer.
There's probably even something better that can be done, but I wanted to offer a solution rather than dump an issue on you on the way out the door!