Yeah, I'm not totally sure how to fix that tbh and always have assumed it's just off. Open to suggestions though!
I use WorkOutDoors (with a Polar H10), and I've attempted the whole "do hill sprints" thing to calculate it, but I'm generally not far off from 220-age. When I put my resting heart rate into WorkOutDoors the zones get thrown even further off, so I don't even bother with that data point. I've kinda just shrugged it off and assume what is reading as Zone 5 is more like a high Zone 4.
I've considered doing a lactate threshold test, but honestly I just go running once a week to supplement my muay thai training, so it's not totally worth it to me.