Instead of limit(), I think that remaining() is what we want.  limit() will == remaining() if position() == 0, but I don't think this can assume that position == 0