in reply to
big bug in Date::Calc?
Looks to me like the bug is in your logic. You're working with the LAST day of 2012 (2012 Dec 31, Mon) but expecting that to be treated as the first day of the first week of 2013.
Yes, it's part of a week that's MOSTLY in 2013, but Date::Calc isn't on board for that very human interpretation. Like most programs, it's quite literal minded. Day 1 of 2013 is 2013 Jan 1, Tues, and 2013 Jan 8 is one week later.
If you didn't program your executable by toggling in binary, it wasn't really programming!