Because I think that makes `push_at_least()` more generally useful. If `min` is `0` it's equivalent to `push()`. The semantics of this method are "push, then verify that you hit your minimum; if not, repeat". It's the same meaning as in `read_at_least()`. If you don't want to read, you can skip the call entirely.

Basically, it just seems wrong to me that I could call a `read()` variant and not end up calling `read()`.