I'm not sure if I'm commenting the correct part of the thread. Anyway, this is a comment regarding negative indices to `[], with one index given.
I see many uses of objects where negative indices are fully apropiate. Thus, if the standard `[] lfun is changed to take an index type argument, it must must not clamp the range to 0<=x<sizeof(Object), as it can be fully valid with an object having sizeof(Object)==10, while the indices ranges -5..4.