When you set up a calculation to refer to data in a related table, it refers only to fields in the first related record. The data in all other related records will be ignored.
To get the results that you want, you need to use a function that can pull data from all related records. Both the List and ExecuteSQL functions can do that.
If ( IsEmpty ( FilterValues ( List ( Registrations::StatusFieldName ) ; "A" ) ) ; "R" ; "A" )
Thank you! Worked like a charm! I've been trying to figure this out for days; it's been haunting my sleep.