Base prefix notation

KeithRB:
I would guess, that if you start looking at date calculations, you would find that the 0 based method is more natural, and in fact there are a lot of (day-1) calculations in the code.

0 based lets you use modulo in calculations easily.

If you want to go that route, I recommend you think of the year as running from the beginning of March to the end of February. This makes dealing with leap years a lot simpler (if, in some ways, less intuitive).
If we reckon the human date "March 1" (of any year) as machine date 0, then machine date 31 will always mean April 1; machine date 61 will always mean May 1; Halloween and Christmas Day will come every year without fail on machine dates 244 and 299, respectively; and your girlfriend will wallop you if you don't special-case machine date 350.