Well, took me about 15 minutes to discover the problem with your code...
In info.xml, you defined this:
<param name="month" type="select">0:0;1;2;3;4;5;6;7;8;9;10;11</param>
and this:
<param name="day" type="select">0:0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30</param>
And in the script.php file, you are calling these parameters directly when they are needed.
The problem, as you might see, is that both the month and the day are BEHIND 1. You set January to 0, and December is set to 11, so this will return 0 for the month of January, instead of 1. So every month will be behind a month when you call upon the parameters within the script.php file. And you are doing the same thing for the days. You can fix this in 2 ways.
Change your parameter definition in info.xml to start at 1 instead of 0 for info.xml... example for the month parameter definition...
<param name="month" type="select">0:1;2;3;4;5;6;7;8;9;10;11;12</param>
And make sure to change the language files as well. And do the same for the days, unless you want it to expire and not show on the expiration day, which I don't think you want, so you'll need to fix the day parameter definition as well.
That should fix your problem, because strtotime() is calculating a month and a day behind, currently, from what you have set in the Admin for this module.