Thanks for throwing code evaluation expressions into the race ... they offer exactly the range of flexibility I need to solve my class of problems ... and - as you can tell by the date on this post - it took me quite some time to realise (a) what they are and (b) how they work.