The problem is that after the subtraction the date '1912-02-28' doesn't know it's supposed to be the last date of the month instead of the 28th, specifically. And you can't really fix that without breaking pg_upgrade and probably hundreds of applications using the binary format for dates.
You'll just have to take this into account when working on your application.