The Muslim calendar isn't exact, yet predictions are made (the purpose of calendars is to plan) that could be a day early or late.
One technique in predicting the full moon is to have all even numbered months have 29 days, and odd numbered months have 30 days, with an extra day on the last month for leap year (a concept otherwise unknown in the Muslim calendar). The leap years are determined by the following algorithm:
If leap year: Year % 30 = 2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29
Some calendars use a month of 29.53056 days, which is close to but not exactly a synodic month (29.53059 days).