@Beliakov Yes, that’s right. On the original Pebble (Aplite with 2.x firmware) I noticed that the phase of the moon was about ten hours ahead of reality. The app would show the moon as exactly full, but looking outside, the moon wouldn’t be full for another ten hours. On Basalt (SDK 3.0) the watch matches reality.
This is presumably because you are calling the time() function, which for me returns a number 36000 higher on SDK 2.x than it does on SDK 3.0. Ten hours, of course, is my time zone offset from UTC. You’ve no doubt discovered that SDK 2.0 provides no way for the watch to know your time zone, short of using PebbleKit JS. Any calculation that assumes that time() returns a UTC-epoch time will be off by the user’s time zone. SDK 3.0 time() returns a correct UTC-epoch time as it does on all Unix platforms, so Ecliptic’s ephemeris calculation is correct within minutes or better.
It’s not likely to be so obvious in your part of the world, which is probably only three or so hours offset from UTC.