I have a survey where the user can change the status, and I am tracking the dateTime of the status change in a hidden field. The problem is when a user changes the status, the dateTime field in reference to the existing status value is set to null when the form is submitted.
The way this is setup is I have a select_one field with my status values.


For each status value, I have hidden dateTime fields with a calculation value of now(), and a relevant value that matches the selected status value.

Once the status has been selected and submitted, I want the dateTime field to calculate and then never change. From the description of the calculateMode=whenEmpty, I thought this was the correct choice.
However, if I change the status from say 2. to 4., the dateTime value for 2. becomes null, and 4. populates with the now value.
Before changing and submitting:

After changing and submitting, note how 2. is blank:

I've tried other calculateMode values and nothing works. Any ideas?