I haven't done a deep dive on all the code but, if this works as advertised, it's an awesome solution for the problem stated. Thanks for taking the time to write it all up and sharing it, Terry.
--Jeff Moden
Change is inevitable... Change for the better is not.