dynamically set 'required' status of registration field

I've run into what might be considered an s2member bug. To whit: when a member is demoted the information that had been in fields only applicable to higher levels seems to be lost. This means that the member must re-enter any higher level fields when they are re-promoted.
To work around this issue, I'd like to make fields that are optional for level 0 and required for levels >1 (in my case, it would be a set of address fields).
So far as I can determine, a custom registration field is either required for all the levels it applies to or optional for all the levels it applies to. I watched the video on how to dynamically set registration fields, but I can't determine which hook I should be attaching my function to or which values I need to change. Is there a reference somewhere to the structure of the $_field variable and/or other data structures I'll need to manipulate?
To work around this issue, I'd like to make fields that are optional for level 0 and required for levels >1 (in my case, it would be a set of address fields).
So far as I can determine, a custom registration field is either required for all the levels it applies to or optional for all the levels it applies to. I watched the video on how to dynamically set registration fields, but I can't determine which hook I should be attaching my function to or which values I need to change. Is there a reference somewhere to the structure of the $_field variable and/or other data structures I'll need to manipulate?