When size_t is bigger than off_t, pos - r->length will end up very large,
instead of negative, when r->length > pos, so the MAX didn't help to get
rid of negative values. I'm not sure that this should really happen in
practice, but it's better to avoid it.