Beeminder Forum

Ratcheting to zero doesn't actually ratchet to zero?

Apologies if you get this question a lot, but I couldn’t find any answers. For Do Less goals, the auto-ratchet feature seems to work just fine. But for Do More goals, it’s not working how I expect. For instance, my sleep goal has a commitment of 8 hours per day, and I cap the safety buffer at 0 days. What I would expect, then, is that if I get 9 hours of sleep one night, I’ll still need to get at least 8 hours the next night, not 7 hours. But that’s not what’s happening. The past three nights, for example, I’ve spent 08:16, 08:46, and 08:13 in bed. And instead of just ratcheting back to 08:00 due every morning, the surplus times have added up to ~75 minutes, and now I only have 06:44 due tomorrow. So it hasn’t auto-ratcheted to 08:00, and I can’t ratchet manually either—it says I’m already at zero days, when I’m really at more like 0.16 days. Is this intentional? Seems like I should be able to require 8 hours of sleep every night regardless of how many hours I got the previous night.


My recollection of the ratcheting mechanism is that it only ensures that today is an emergency day, which means you might have some benefit from past activity and it is just a very small emergency.

It doesn’t reset to zero accomplishment as you were expecting. Rather it sets the number of days-on-which-I-need-not-do-anything.

By its nature, Beeminder enforces the average daily progress over time, rather than a daily minimum. Do More is it’s natural mode.

Do Less is surprisingly hard to implement and, as I recall, ratcheting for Do Less had to be expressed in terms of Units rather than Days, which creates two different mental models and can be confusing.

Clearer explanations probably exist.


I endorse @philip’s answer here! At the other extreme is our blog post from last year when we did a big overhaul of ratcheting: Road Ratchet Revamp Redresses “Ratcheting Breaks Breaks” Bug | Beeminder Blog


So you want a goal where you succeed if you’ve slept over 8 hours or more and fail if you haven’t, regardless of what you did before (i.e. no building a buffer). Wouldn’t you be better served with 0/1 datapoints representing nights with and without 8 hours of sleep? This could even be automated, based on your current goal.

This wasn’t what you were asking though and sorry if this was obvious to you.


That’s a good idea, thank you!

Wait a second. How would I automate that exactly?