Your parameters should be as follows. I don't know what else to suggest beyond this as the below is working perfectly fine in my tests.
Bonus time before first period start (for calendar-based durations): 3 months
Bonus time when reactivating expired subscriptions: 3 months
Can be reactivated if expired or cancelled since more than: Can be reactivated anytime
Can be reactivated if expired or cancelled since less than: Can be reactivated anytime
Manual renewal extends expiration date as follows: Renewal starts at expiration date or at payment date - whichever happens first (allow overlap but no free gap)
Below are the additional parameters I've set for this plan.
Regular Validity duration: This calendar year
Start date of calendar year: 01-01
Renewable in advance by: 1 year
Grace period before real expiration: 90 days
Otherwise what you're experiencing is working exactly as you've told it to. If the user did not subscribe for 2017, but did for 2016 and you've it set to extend from expiration it will renew them for 2017; not 2018, because you've set it to do exactly that.
Please see the attached screenshots of your scenario with the above configuration working fine.
Expired:
Renewed: