In my experience the form is lazy (ie for perfomance reasons) and does not recalculate fields unless it needs them for the form. It would be nice if the form realized that a field was used in a form rule and hence included it in fields it recalculates when the data changes.
I typically have a section on the form called "Req'd for form rules" and then a rule like when some field is not equal to 99999999999, then hide section Reqd for form rules.
That way the form will "see" any changes to those fields in that section as data entry changes and the form rule will work, yet not expose those fields to users.