First off, an aside: I have tinkered with S2Member a bit, and am equally impressed by the thorough and very nicely laid out documentation provided in-line with the plugin, as well as the enormous flexibility the plugin offers. It is an enormous project to maintain, let alone develop further, and I truly hope that the undoubtedly fast growing user base reciprocates in its more material recognition. This is one of the plugins that make WordPress such a fantastic platform to work with; especially for member-based non-profits as is our case it would simply be impossible (not to mention: outright not affordable) to do this with the same degree of reliability, ease of use and efficiency. So, tons of respect and appreciation are due.
Now the question: I occasionally run into a member who is so anxious to not let the membership run out, that (s)he wants to renew a bit in advance of the expiration date. In the case of a professional association, that's not too surprising, but I acknowledge that it does present a problem on the backend side.
After carefully going through the in-line documentation (truly fantastic, again kudos for the mammoth effort) I reckon it should be possible to accommodate something like that, through some conditional logic, by "getting" the currently existing EOT date, then calculating the new (i.e. intended) EOT based on the new membership term duration added to the end of the current EOT, and sending that off to PayPal, and then listening to / plugging in the resulting transaction details into the S2Member data.
The ramifications aren't as straightforward as it may seem at first glance, I realize, given the additional conditional logic that would need to be applied to the modified renewal page / form (after all, this is not a more traditional upgrade / downgrade scenario) so here I am: has there been a previous S2Member user who ran into this or a similar situation, and has crafted a solution that (s)he is willing to share?
Much obliged, again!