I think that Fields!OrderPriceNatural.Value is the problem.
If evaluation in the first IIF statement fails, then you also see the wrong results: Fields!BillingRecordPriceNatural.Value (=0) instead of the evaluation of the second IIF statement.
Does the Fields!OrderPriceNatural.Value exist, does it have a value?
Try this statement to see if the first IIF statement is causing the problem:
=IIF (IsNothing(Fields!OrderPriceNatural.Value), 1, 2)
If you see 2 where you expected 1 then the problem is not caused by the nested IIF.