There could be so many causes for timing. As you are no doubt aware looking at the calibration there are many tables which add/subtract timing based on various conditions:
- IAT/ECT Temps
- RPM deviation from desired idle
- Spark smoothing

Best bet is probably to log a bunch of spark related PIDs and see if you can derive which of them is contributing the the fluctuation.