2019RawFinal
*31-Dec*L.MikaelL.Mikael
5-JanMikhilMikhil
12-JanGazulaKrasner
*19-Jan*N.MikaelN.Mikael
26-JanL.MikaelGazula
2-FebN.MikaelKafina
9-FebJoshiMikhil
*16-Feb*JoshiJoshi
*23-Feb*FanucciFanucci
2-MarFanucciN.Mikael
9-MarKafinaL.Mikael
16-MarKrasnerKrasner
23-MarMikhilJoshi
30-MarGazulaGazula
6-AprL.MikaelFanucci
*13-Apr*KafinaKafina
*20-Apr*KrasnerKrasner
27-AprN.MikaelN.Mikael
4-MayJoshiJoshi
11-MayFanucciGazula
18-MayKafinaKafina
*25-May*MikhilMikhil
1-JunKrasnerKrasner
8-JunMikhilFanucci
15-JunGazulaJoshi
22-JunL.MikaelKafina
29-JunN.MikaelMikhil
*4-Jul*GazulaGazula
6-JulJoshiL.Mikael
13-JulFanucciFanucci
20-JulKafinaN.Mikael
27-JulKrasnerMikhil
3-AugMikhilL.Mikael
10-AugGazulaGazula
17-AugL.MikaelFanucci
24-AugN.MikaelKafina
*31-Aug*L.MikaelL.Mikael
7-SepJoshiN.Mikael
14-SepFanucciJoshi
21-SepKafinaGazula
28-SepKrasnerMikhil
5-OctMikhilFanucci
*12-Oct*N.MikaelN.Mikael
19-OctGazulaL.Mikael
26-OctL.MikaelKrasner
2-NovN.MikaelKafina
*9-Nov*JoshiJoshi
16-NovJoshiMikhil
23-NovFanucciL.Mikael
*28-Nov*FanucciFanucci
*30-Nov*KafinaKafina
7-DecKafinaKrasner
14-DecKrasnerN.Mikael
21-DecMikhilJoshi
*25-Dec*KrasnerKrasner
*28-Dec*MikhilMikhil
2020 rotation starts with Gazula
Who is up first for the year?

hi
012345678910111213
0*31-Dec**30-Dec**31-Dec**1-Jan**1-Jan**1-Jan**1-Jan**31-Dec**30-Dec**31-Dec**1-Jan**1-Jan**1-Jan**1-Jan*
17-Jan6-Jan5-Jan4-Jan3-Jan9-Jan8-Jan7-Jan6-Jan5-Jan4-Jan3-Jan9-Jan8-Jan
2*14-Jan**13-Jan*12-Jan11-Jan10-Jan*16-Jan**15-Jan**14-Jan**13-Jan*12-Jan11-Jan10-Jan*16-Jan**15-Jan*
321-Jan20-Jan*19-Jan**18-Jan**17-Jan*23-Jan22-Jan21-Jan20-Jan*19-Jan**18-Jan**17-Jan*23-Jan22-Jan
428-Jan27-Jan26-Jan25-Jan24-Jan30-Jan29-Jan28-Jan27-Jan26-Jan25-Jan24-Jan30-Jan29-Jan
54-Feb3-Feb2-Feb1-Feb31-Jan6-Feb5-Feb4-Feb3-Feb2-Feb1-Feb31-Jan6-Feb5-Feb
611-Feb10-Feb9-Feb8-Feb7-Feb*13-Feb*12-Feb11-Feb10-Feb9-Feb8-Feb7-Feb*13-Feb*12-Feb
7*18-Feb**17-Feb**16-Feb**15-Feb**14-Feb**20-Feb**19-Feb**18-Jan**17-Feb**16-Feb**15-Feb**14-Feb**20-Feb**19-Feb*
8*25-Feb**24-Feb**23-Feb**22-Feb**21-Feb*27-Feb*26-Feb**25-Jan**24-Feb**23-Feb**22-Feb**21-Feb*27-Feb*26-Feb*
94-Mar3-Mar2-Mar1-Mar28-Feb6-Mar5-Mar3-Mar2-Mar1-Mar29-Feb28-Feb5-Mar4-Mar
1011-Mar10-Mar9-Mar8-Mar7-Mar13-Mar12-Mar10-Mar9-Mar8-Mar7-Mar6-Mar12-Mar11-Mar
1118-Mar17-Mar16-Mar15-Mar14-Mar20-Mar19-Mar17-Mar16-Mar15-Mar14-Mar13-Mar19-Mar18-Mar
1225-Mar24-Mar23-Mar22-Mar21-Mar27-Mar26-Mar24-Mar23-Mar22-Mar21-Mar20-Mar26-Mar25-Mar
131-Apr31-Mar30-Mar29-Mar28-Mar3-Apr2-Apr31-Mar30-Mar29-Mar28-Mar27-Mar2-Apr1-Apr
148-Apr7-Apr6-Apr5-Apr4-Apr10-Apr9-Apr7-Apr6-Apr5-Apr4-Apr3-Apr9-Apr8-Apr
15*15-Apr**14-Apr**13-Apr*12-Apr11-Apr*17-Apr**16-Apr**14-Apr**13-Apr*12-Apr11-Apr10-Apr*16-Apr**15-Apr*
16*22-Apr**21-Apr**20-Apr**19-Apr**18-Apr**24-Apr**23-Apr**21-Apr**20-Apr**19-Apr**18-Apr**17-Apr**23-Apr**22-Apr*
1729-Apr28-Apr27-Apr*26-Apr**25-Apr*1-May30-Apr28-Apr27-Apr*26-Apr**25-Apr**24-Apr*30-Apr29-Apr
186-May5-May4-May3-May2-May8-May7-May5-May4-May3-May2-May1-May7-May6-May
1913-May12-May11-May10-May9-May15-May14-May12-May11-May10-May9-May8-May14-May13-May
2020-May19-May18-May17-May16-May22-May21-May19-May18-May17-May16-May15-May21-May20-May
21*27-May**26-May**25-May**24-May**23-May**29-May**28-May**26-May**25-May**24-May**23-May*22-May*28-May**27-May*
223-Jun2-Jun1-Jun31-May30-May5-Jun4-Jun2-Jun1-Jun31-May30-May*29-May*4-Jun3-Jun
2310-Jun9-Jun8-Jun7-Jun6-Jun12-Jun11-Jun9-Jun8-Jun7-Jun6-Jun5-Jun11-Jun10-Jun
2417-Jun16-Jun15-Jun14-Jun13-Jun19-Jun18-Jun16-Jun15-Jun14-Jun13-Jun12-Jun18-Jun17-Jun
2524-Jun23-Jun22-Jun21-Jun20-Jun26-Jun25-Jun23-Jun22-Jun21-Jun20-Jun19-Jun25-Jun24-Jun
261-Jul30-Jun29-Jun28-Jun27-Jun*3-Jul**2-Jul*30-Jun29-Jun28-Jun29-Jun26-Jun*2-Jul*1-Jul
27*3-Jul**4-Jul**4-Jul**4-Jul**4-Jul*10-Jul9-Jul*4-Jul**4-Jul**4-Jul**4-Jul**3-Jul*9-Jul*3-Jul*
288-Jul7-Jul6-Jul12-Jul11-Jul17-Jul16-Jul7-Jul6-Jul12-Jul11-Jul10-Jul16-Jul8-Jul
2915-Jul14-Jul13-Jul19-Jul18-Jul24-Jul23-Jul14-Jul13-Jul19-Jul18-Jul17-Jul23-Jul15-Jul
3022-Jul21-Jul20-Jul26-Jul25-Jul31-Jul30-Jul21-Jul20-Jul26-Jul25-Jul24-Jul30-Jul22-Jul
3129-Jul28-Jul27-Jul2-Aug1-Aug7-Aug6-Aug28-Jul27-Jul2-Aug1-Aug31-Jul6-Aug29-Jul
325-Aug4-Aug3-Aug9-Aug8-Aug14-Aug13-Aug4-Aug3-Aug9-Aug8-Aug7-Aug13-Aug5-Aug
3312-Aug11-Aug10-Aug16-Aug15-Aug21-Aug20-Aug11-Aug10-Aug16-Aug15-Aug14-Aug20-Aug12-Aug
3419-Aug18-Aug17-Aug23-Aug22-Aug28-Aug27-Aug18-Aug17-Aug23-Aug22-Aug21-Aug27-Aug12-Aug
3526-Aug25-Aug24-Aug*30-Aug*29-Aug*4-Sep**3-Sep*25-Aug24-Aug*30-Aug*29-Aug28-Aug*3-Sep*26-Aug
36*2-Sep**1-Sep**31-Aug*6-Sep*5-Sep*11-Sep10-Sep*1-Sep**31-Aug*6-Sep*5-Sep**4-Sep*10-Sep*2-Sep*
379-Sep8-Sep7-Sep13-Sep12-Sep18-Sep17-Sep8-Sep7-Sep13-Sep12-Sep11-Sep17-Sep9-Sep
3816-Sep15-Sep14-Sep20-Sep19-Sep25-Sep24-Sep15-Sep14-Sep20-Sep19-Sep18-Sep24-Sep16-Sep
3923-Sep22-Sep21-Sep27-Sep26-Sep2-Oct1-Oct22-Sep21-Sep27-Sep26-Sep25-Sep1-Oct23-Sep
4030-Sep29-Sep28-Sep4-Oct3-Oct*9-Oct**8-Oct*29-Sep28-Sep4-Oct3-Oct2-Oct*8-Oct*30-Sep
41*7-Oct**6-Oct*5-Oct*11-Oct**10-Oct*16-Oct15-Oct*6-Oct*5-Oct*11-Oct**10-Oct**9-Oct*15-Oct*7-Oct*
4214-Oct13-Oct*12-Oct*18-Oct17-Oct23-Oct22-Oct13-Oct*12-Oct*18-Oct17-Oct16-Oct22-Oct14-Oct
4321-Oct20-Oct19-Oct25-Oct24-Oct30-Oct29-Oct20-Oct19-Oct25-Oct24-Oct23-Oct29-Oct21-Oct
4428-Oct27-Oct26-Oct1-Nov31-Oct6-Nov5-Nov27-Oct26-Oct1-Nov31-Oct30-Oct5-Nov28-Oct
454-Nov3-Nov2-Nov8-Nov7-Nov*11-Nov**11-Nov*3-Nov2-Nov8-Nov7-Nov6-Nov*11-Nov*4-Nov
46*11-Nov**10-Nov**9-Nov**10-Nov**11-Nov*13-Nov19-Nov*10-Nov**9-Nov**10-Nov**11-Nov**11-Nov*19-Nov*11-Nov*
4718-Nov17-Nov16-Nov15-Nov14-Nov20-Nov*24-Nov*17-Nov16-Nov15-Nov14-Nov13-Nov*24-Nov*18-Nov
48*23-Nov**22-Nov*23-Nov22-Nov21-Nov*25-Nov**26-Nov**22-Nov*23-Nov22-Nov21-Nov20-Nov*26-Nov**23-Nov*
49*25-Nov**24-Nov**28-Nov**27-Nov**26-Nov**27-Nov*3-Dec*24-Nov**28-Nov**27-Nov**26-Nov**25-Nov*3-Dec*25-Nov*
502-Dec1-Dec*30-Nov**29-Nov**28-Nov*4-Dec10-Dec1-Dec*30-Nov**29-Nov**28-Nov**27-Nov*10-Dec2-Dec
519-Dec8-Dec7-Dec6-Dec5-Dec11-Dec17-Dec8-Dec7-Dec6-Dec5-Dec4-Dec17-Dec9-Dec
5216-Dec15-Dec14-Dec13-Dec12-Dec18-Dec*24-Dec*15-Dec14-Dec13-Dec12-Dec11-Dec*24-Dec*16-Dec
53*23-Dec*22-Dec21-Dec20-Dec19-Dec*25-Dec*22-Dec21-Dec20-Dec19-Dec18-Dec *23-Dec*
54*24-Dec**25-Dec**25-Dec**25-Dec**24-Dec**25-Dec**25-Dec**25-Dec**25-Dec*
55*29-Dec**28-Dec**27-Dec**29-Dec**28-Dec**27-Dec*
Contact Info
(For any dweebs looking at this page, it's a Vernam cipher)
1c041e06014d232c0f1207023e494c2e2b646c44686e6e2e310305000a644d74565f4d416f575f4e5f5d577e686e6d685d26090f03644d74565f4d41605c5c4e5a5c5779686e6d685d2d030e0a644d74565f4d416156594e5e59527a686e6d685d2709061f081744495e53597e455f555940557e59546d685e6c66250e155f44495e53597e4554515c40557d51576d685e6c6607000a16260c0124003809420000006f
1c041a0a1b05046d26061e143b04404322296c44686e6d6b18030a0a0c086c6558505c4877535f56425c5d7d516e6d685e6f2a0217644d74565f4d416156594e5e55557c686e6d685d2d030e0a644d74565f4d416552584e5d5d5579686e6d685d26090f03644d78515f4d416455544e595b517f686e6d685d2709061f081744495e53597e455b555f40527952516d685e6c6608080c1f380d062418360d030c410e0a206b
010c02060a19046d2b0817093e494c2e2b646c44686e6e2e310305000a644d74565f4d416454544e5f5d557a686e6d685d26090f03644d74565f4d416f55554e565e507e686e6d685d2d030e0a644d74565f4d4165535f4e5a5e567c686e6d685d2709061f081744495e53597e455f555940567d52516d685e6c66250e155f44495e53597e455f525740557d54516d685e6c66150603002815060e0e240d05230c02082e0014104f39001869
1a041e170603450600010d0f36494c2e2b646c44686e6e233606072c090b0c2e046e4c58605d45435d55526057575d595e6c656a6522032b080401687f5c5b5b464d5775564a54566755656a66646f0e040b08687f525452464d5274584a51546156656a66646f050e0a01687f525452464d5778584a57506151656a66646f0f04021404256c445a58554c6d5353514c6657595066646c446b2105195e4d55545744457e575e495165505c6a66646c470c0c05073e0b0d230a00003f12080a0938161c4d001f0247
1d0415432d4d2e3f00140a0425494c2e2b646f0207010d02326c445a58554c6d5553574c6f555d5365250a20046e4c58605d45435b59556056515d585d26090f03644d78515f4d4162535d4e585f567f6b2105195e4d55545744457955544955615658690b0206390e150e002e250102060103221304014f39001869
1b0c000a0e034500080c05043b494c2e2b646f0207010d02326c445a58554c6d52515d4c60525b51652e00210d6e4c566f5445435c5e5560505754575d2d030e0a644d7a59564d416f5c554e5f5d55746b2105195e4d5b5b5e44457f515049536356586903000c26000208213a041f10020801630e15036b
19040b1a4f200c260002084d7728286a6522032b0804015b5e4d55545744457e575e495660525e6927020828684f5359664c4c5b5654487d51575d6b150009130a1f6c6558505c48775d58524254567a576d22002f6c4454575c4c6d5357534c65515f57652e00210d6e4c566f5445435c5e5560505755515d0805080e08090d0c0617123a00084d001f0247
1a040b070e4d28240a0f0d0d7b4521274f672a2b070e07046d455b5b5e40577a544a5055605c4c69290c1d6d5b47535966485e545a40567d5352446b1f0a0106554d5c7a594a565764485b57585d45472202080d775f59535740507a534a565262554c6902000c26090e082130080d0a034306220c476e
Under the calendar system we use in Western civilization today, there are 14 distinct yearly calendars - one beginning on each weekday for a non-leap year and one beginning on each weekday for a leap year. Because of the Gregorian leap year system in use since 1582, (off by 1/2 second per century), these calendars rotate in a 400-year perpetual cycle. That is, 1613, 2013, 2413, etc., all have the same calendar and each is followed by the same calendar in 1614, 2014, 2414, etc. If you don't cross a century mark (--00), the cycles are 28 years.

So how does this relate to coverage?
Well, it turns out that the number of coverage periods in a year is not the same for each of the 14 calendar types. That number varies from 53 to 56 and depends upon how many "fixed" holidays (Jan 1, Jul 4, Nov 11, Dec 25) fall on Fri/Sat/Sun/Mon vs. Tue/Wed/Thu. Also, over the years, consensus has determined which possible coverage periods are "premium" versus "non-premium." In this regard, premium periods have to been shown to include not only standard holidays, but the weekends following school vacation weeks in February and April. Taking this into account, there are between 39 and 41 non-premium coverage periods and 14 or 15 premium coverage periods in any given year, which means 4 or 5 non-premium coverage periods and 1 or 2 premium coverage periods per doc for an 8-person coverage group. There are 1537 coverage periods in the 28-year cycle (1133 non-premium and 404 premium periods). Since neither 1133 nor 404 are divisible by 8 (coverage docs), neither 28-year premium nor non-premium coverage cycles arithmetically align. The least common multiple of 404 and 8 is 808, corresponding to a 56-year repeating cycle (for premium coverage periods only. Looking at the next cycle up, 400 years, there are 21957 coverage periods, (16185 non-premium and 5772 premium periods). Neither of these is divisible by 8, either. The non-premium cycle, therefore, requires 3200 years to re-align, and the premium cycle requires 800 years (least common multiples of [16185, 8], [5772, 8]), which is the time it will take to get back to 2013, calendar/coverage-wise.

Since a 3200-year cycle is probably too long to wait for mathematically-guaranteed equal coverage distribution, another scheme must be implemented. Several possibilities are illustrated on this page. The left-hand table depicts a straight rotation scheme blind to premium vs. non-premium periods. Since 6 out of the 14 calendar types have 56 (divisible by 8) coverage periods, this leads to "clumping" of premium coverage for certain individuals for certain premium periods, and does not result in equitable premium coverage distribution.

The next simplest scheme would be to "uncouple" premium and non-premium coverage periods, having each rotate separately. For practical purposes, this works fine when neither number of premium periods (14 and 15) is integer divisible by the number of docs (to work perfectly, those quantities would need to be relatively prime), as portrayed in the center table on the linked page. However, if we go back down to 7 docs, it doesn't. Why? 8 of the 14 calendar types have 14 premium periods, and there are blocks of 4 consecutive years which each have that number of premium periods. Since 14 is divisible by 7, this would result in 1 doc having the same premium period 4 or even 5 years in a row.

A more generalizable solution, which is the one currently implemented, is illustrated in the right-hand table (and on the right on this page). In this scheme, which should be obvious from the table itself, the 1st premium period of the year rotates through the Coverage Group on an 8-year cycle, assuring equitable premium period distribution. The only issues with this scheme are:
(1) In a 28 year cycle, there are only 12 years with a (premium) weekend between Christmas and New Years (Ch+). Obviously, those "extra" weekends cannot be equally apportioned - 4 docs get 2 of them and 4 docs only get 1. Boo hoo. This could be solved by incorporating a "doc offset" for the next 28 year cycle (in 2044) with a different doc.
(2) Due to the uncoupling of premium and non-premium coverage, in a given year, 1 doc could have 5 non-premium and 2 premium coverage periods (total of 7) and another could have 4 non-premium and 1 premium coverage periods (total of 5). This is a hypothetical but not a real concern. Projecting the schedule out for the remainder of this century, the difference in highest and lowest assigned coverage periods is cumulatively only 3. Check it out.
(3) Since the coverages are uncoupled, a doc could have a premium coverage period immediately preceded or succeeded by a non-premium coverage period. This is easily remedied via some minor arbitrary manual adjustments.

Historical Holiday Coverage
*NYMLKPresPre+PatSpr+MemIndLabColVetThkTh+ChrCh+
2003xxDE????????Kafina??????KrasnerDE??Kafina??
2004DE??DE??????Kafina????KafinaKrasnerDE??Krasner
2005DE??Krasner??????????DE??KafinaFanucciDEKrasner
2006DEMikhilKafinaMikhilKrasnerPCFanucciDEIBKafinaPCDEKafinaKrasner
2007DEDEKafinaMikhilKrasnerMikhilFanucciKrasnerJoshiDEDEJoshiKafinaMikhilKafina
2008JoshiKafinaKafinaMikhilKrasnerKrasnerDEJoshiFanucciKafinaKrasnerN.MikaelFanucciKrasnerKrasner
2009DEKrasnerFanucciKrasnerKrasnerN.MikaelJoshiKrasnerDEN.MikaelKafinaJoshiDEKafina
2010FanucciJoshiKafinaN.MikaelFanucciKafinaJoshiFanucciDEN.MikaelKrasnerFanucciDEKrasner
2011KafinaL.MikaelFanucciKafinaN.MikaelSGDEFanucciSGKafinaJoshiN.MikaelL.MikaelKrasner
2012JoshiDEJoshiFanucciL.MikaelN.MikaelKafinaJoshiFanucciDEKafinaL.MikaelDEKrasnerSH
2013DEL.MikaelN.MikaelJoshiFanucciKafinaKrasnerDEL.MikaelN.MikaelJoshiFanucciKafinaKrasnerDE
2014L.MikaelN.MikaelJoshiFanucciKafinaKrasnerDEL.MikaelN.MikaelJoshiFanucciKafinaKrasnerDEL.Mikael
2015N.MikaelJoshiGazulaKafinaKrasnerDEL.MikaelN.MikaelJoshiFanucciGazulaKrasnerDEL.Mikael
2016JoshiFanucciKafinaKrasnerDEGazulaL.MikaelN.MikaelJoshiFanucciKafinaKrasnerDEGazula
2017FanucciKafinaKrasnerDEGazulaL.MikaelN.MikaelJoshiFanucciKafinaKrasnerDEGazulaL.Mikael
2018KafinaKrasnerGazulaL.MikaelN.MikaelJoshiFanucciKafinaKrasnerGazulaL.MikaelN.MikaelJoshiFanucciKafina