Denormalize the metaverse so that all calculations can be performed inbound and the result stored in the metaverse, then use only direct export flows.

(And the one I'm choosing at the moment) Perform a direct flow of a NullString attribute in the outbound flow to ensure that nulls are written. Then add dependent sync rules for each condition that flow the calculated value when the condition is met. This can be a bit messy to look at in FIM Service as dependent sync rules can only use logical AND when constructing the scope filters, so OR must be expressed as additional dependent sync rules, which can greatly increase the number of rules required. In outbound flows, the last writer wins. The null value in the parent rule is first. If the condition is met, the dependent rule will write its value second, thus becoming the winning value that is exported. When the condition ceases to be met the direct null value flow from the parent is allowed to win again and becomes the exported value.

Hotfix 4.1.2548.0 did fix the issue, so I can use IIF where needed. However, back when my config was still using the workaround I was using the new scope-based filter rules that came available with R2, not the classic MPR/Set/Workflow that were the only choice in 2010 RTM. So I don't deal with the FIM Service set transitions. All the changes happen in the sync engine.