--- a/meliae/_loader.pyx 2011-07-08 08:48:08.000000000 -0400 +++ b/meliae/_loader.pyx 2011-10-20 14:28:33.000000000 -0400 @@ -491,14 +491,13 @@ off = offset if off >= self._obj.child_list.size: raise IndexError('%s has only %d (not %d) references' - % (self, self._obj.child_list.size, offset)) + % (self, self._obj.child_list.size, offset+1)) + if off < 0: + off = self._obj.child_list.size + off + if off < 0: + raise IndexError('ref index out of range') address = self._obj.child_list.refs[off] try: return self.collection[address] except KeyError: # TODO: What to do if the object isn't present? I think returning a # 'no-such-object' proxy would be nicer than returning nothing raise property c: """The list of children objects as objects (not references)."""