Bug: Heart Rate Zones overlap

Hello,

so since a couple of months I have a problem that my watch, the Forerunner 965 with SW Version 20.32 is overlapping my Heart Rate Zones, no matter if it is based on BPM or %Max. HR, %HRR or %LTHR.
Neither on the watch nor on the garmin connect app I can set up my Heart Rate Zones without that Zone's overlap.
If I run in my aerobic Zone, which the watch sets to 120-139 BPM and I run at 139 BPM, I run already in the Treshhol Zone as well then. Because my Treshhold Zone starts at 139 BPM.
And I can not set it correctly, because it only lets me set the starting BPM for each Zone. If I change the starting BPM for Zone 4 to 140 BPM, the Zone 3 ending also gets changed to 140 BPM. Same goes for every other Zone. The starting BPM is then always the ending BPM on the previous Zone. Hence at certain Heart Rates I run in both Zones.
But it should be like this for Zone 3 and 4:

Zone 4: 140 - 154
Zone 3: 120 - 139

But again, I can not set it like that. And also if I set it to %, the % also overlaps. Previous Zone ends for example at 80%, the next Zone starts also at 80% and not 81% as it should be. I haven't had this problem before. Does anyone has a similar or same problem? Do you checked your Zone's and can set them properly with an starting and end BPM or just the starting BPM and then it overlaps with the ending BPM of your previous Zone?

  • The zones are probably half-open ranges, i.e. 120-140 means 120 <= hr < 140. This is actually a reasonable way to do it, since technically nothing forces hr to be an integer. It could be 139.5, which would go nowhere if ranges were 120-139 and 140-154. Wink

  • The zones are probably half-open ranges, i.e. 120-140 means 120 <= hr < 140. This is actually a reasonable way to do it, since technically nothing forces hr to be an integer. It could be 139.5, which would go nowhere if ranges were 120-139 and 140-154

    Yeah this is similar to how tax brackets work. The max value for every range is the same as the min value for the next, and ranges are typically defined as being exclusive of of their min values but inclusive of their max values, except for the first range. (Garmin's HR zones are the opposite, where they're inclusive of their min values but exclusive of their max values, except for the final range.)

    OP can verify this by adding HR Zone as a datafield during an activity, which shows HR Zone to one decimal place (e.g. 1.6, 2.5).

    I think they'll find that if Zone 3 is set to 120 - 139 and and Zone 4 is set to 139-154, and their HR is exactly 139, then their HR Zone datafield will display 4.0. This would confirm that 139 is actually zone 4, and not zone 3.

    In general, I think fractional zones, as displayed on the watch and in the Connect website, are determined as follows:

    For any given heart rate h, your fractional zone z equals x + (h - zone_x_min) / (zone_x_max -  zone_x_min), where x is the number of a zone that h falls within (zone_x_min <= h <= zone_x_max)

    e.g. Suppose Z1 is 120-140 and Z2 is 140-160:

    - if your HR is 130, then your fractional zone is 1 + (130 - 120) / (Z1_max  - Z1_min) = (130 -120) / (140-120) = 1 + 10 / 20 = 1 + 0.5 = 1.5 (this makes sense as 130 is is exactly halfway between 120 and 140)

    - if your HR is 140, then there's 2 ways to calculate your fractional zone, both of which have the same result:

    (based on z1)

    1 + (140 - Z1_min) / (Z1_max  - Z1_min)  = 1 + (140 - 130) / (140 - 130) = 1 + 1 = 2

    (based on z2)

    2 + (140 - Z2_min) / (Z2_max  - Z2_min)  = 2 + (140 - 140) / (160 - 140) = 2 + 0 = 2

    Ofc this doesn't work for heart rates above your configured max, since there's no additional upper limit beyond the configured max. As far as I can tell, anything equal to or above max HR is interpreted as 6.0. I checked with an activity I ran when I was really out of shape, so actual my max HR exceeded my configured max: the max HR by % of max was 103%, but the max hr by zone was 6.0.