I'm very impressed that you managed to handle the generic case of: function foo(...) local x, y = 1, 2 try return x or y, ... finally x = nil end end print(foo(2, 3, 4)) Cases like that thwarted my attempts when I tried a while back.. - Alex