I actually do agree all of your post but this:
> To me its probably a sign of bad design when a system requires logic to determine end of month dates.
Working for a financial institute I know of
many cases where "end of month" has a business related meaning. Often dates for payments, rate-fixings etc. are set in a way like "last working date in month X".