In brief, I'm unsure as to why some dates for Thaipusam seem to differ by one or two days from the dates of the full moons.
For more detail:
I'm attempting to write some code to determine the exact Gregorian date of the Thaipusam public holiday in Malaysia for any given Gregorian year.
According to either of the following articles on Wikipedia:
Thaipusam is celebrated on the first full Moon in the Tamil month of Thai (which is based on the Hindu solar calendar).
This yields the correct result for some years, but I am finding exceptions. For example if we consider the current Gregorian year (2020):
Implementing the algorithm for converting from the Hindu solar calendar to Gregorian date that can be found in , I find that the month of Thai in Gregorian year 2020 is from 15th January 2020 to 12th February 2020. It can be easily verified that the only full moon within that period is on 9th February 2020 at 07:30 GMT. Converting this to Malaysian time would give us 9th February 2020 at 15:30. Yet from multiple data sources (including the above Wikipedia article) I am seeing the date of Thaipusam as the 8th February. Any idea why this is?
Ideas I've had so far are:
- Countries do have a tendency to roll public holidays, i.e. for Malaysia if the holiday falls on a Sunday it is moved to the next Monday (see: http://www.kabinet.gov.my/bkpp/pdf/akta_warta/1946_12_16_holidayordinance_sarawakcap8.pdf). The 9th Feb is a Sunday, but this has been moved to the Saturday rather than the Monday.
- Some countries also operate on an observational basis for such events. At 15:30 in Kuala Lumpur the full moon would not be visible. So this could be a reason to shift it to the day before (yet I have found no evidence to back up this hypothesis).
Hopefully I am just missing something fairly trivial. Would be very grateful if someone could shed some light on this.
 Reingold, E., & Dershowitz, N. (2018). Calendrical Calculations: The Ultimate Edition. Cambridge: Cambridge University Press. doi:10.1017/9781107415058