Written by Chris Klosowski. Last updated on June 28, 2023. Fixed a bug with variable prices and renewal discount calculations (props Danny Van Kooten)