SOLUTION
ok, this may have been too easy to make the experienced users overlook this
first of all, i tried what you have done, exactly, in 8.3 with same result.
but then I realized the same thing from the FIRST TIME I saw your example (I was in bed and not at kbd) - hey, thats not the way I would have written that.
My rule would have been this: (and this works as expected) (Dynamic, of course)
IF Cust.FName WAS CHANGED THEN
Cust.FName = TO_UPPER_CASE(Cust.FName)
enjoy!