Knowing when an expiration date is not the end of a membership

I'm looking back at old memberships and trying to figure out what memberships were active at some time in the past.

For memberships that run their full course the initiation date (init_dt) expiration date (expr_dt) are great!

However for memberships that are terminated early, Canceled, Suspended, Deactivated, the expiration date does not seem to get updated.  A little over 1% of our records have this kind of commandment.

Has anyone put together SQL code that accounts for early termination of memberships?  Using TA_Audit_trail or some other clever mechanism?

Thanks.  Even if you have not written code to solve for this have you run into cases where you think a solution for this would be helpful.  Please share.