A lot depends here on what MyFunc() does. If it doesn't depend on the values in the record, then execute it before the for each and assign the value to a variable to turn the for each into something simple. If it does depend on the values in the record, then I would do what you could to bracket the for each to the minimum number of records and then do you test on that result set within the for each.
Oh, and could we move back to child of the main post or start a new thread? The deep nesting on this thread is getting tedious to read.