If a member cancels the renewal, when it expires, the renewal data (cost/period) is not preset and the user can't renew by themselves anymore.
Just to double-check, is it a product or a subscription? If it's a subscription, I have a modification for v4: https://invisionbyte.net/files/file/303-tb-always-allow-subscription-renewals/
There's no v5 version yet, but I have plans to upgrade it. Just waiting for IPS to add some hook points in the beta version.