満月っていつ?

ダイバーとして潮汐をカレンダーと関連づけようとすると、月印か潮名を入れたくなります。こちらのスクリプトを参考に、まずは月齢の計算をできるようにしてみました。「ここでユリウス通日の計算をするなら、こないだの曜日計算は何だったんだ」という正しい疑問は、持たないことにします…。
で、ここで最終的に求めたいのは月齢ではありませんが、このスクリプトからは新月の日しか分かりません。知りたいのは満月・新月などのタイミングと潮名です*1。そのため、一部改造が必要でした。
月齢は新月からの日数なので簡単なのですが、厄介なのは満月が新月の「平均的な半周後」ではないということです。実際自分で計算してみると、海洋情報部が出すような満月の日とは ずれてしまうのが気になります。満月の計算ができないと、同様に潮名の計算もできません。

*1:ちなみに潮名の定義は地方によって違ったりするらしいですが、ここではWikipediaでの定義に従うことにします。