Well I'll be jiggered. Out of curiosity I tried it (using return to exit a function within a loop) and it all seems to work with no memory loss. I'd probably never actually use that in anger as it goes against the grain - but it does display (again) what well designed thing B3D is. So my humble apologies for the bum steer and thanks for putting me right. How did you guys figure out that exit within a loop within a function is not needed?