quote:
or is that too complex?
Not complex, but it won't always work.

One problem is that IIF() returns arbitrary variable types, while your solution appears to be limited to numeric types.

The second problem is variable scope. You will either need to parse variables at the time you call IIF2() in which case it has the same problems as the existing IIF, or you will have to make the variables global.

You can get around the arbitrary type by making an assignment in the Execute
code:
Exit Execute("$$IIF2="+$exp[not not $condition])

But the variable scope problem is a tougher nut to crack.