function Parray(...) return setmetatable({...}, {__index = function(self, k) if type(k) == "number" and k < 0 then k = #self + 1 + k end return rawget(self, k) end }) end > t = Parray(1,2,3,4,5,6,7,8) > = t[7] 7 > = t[-2] 7