!7 module SteadyBeat { int interval = 50; transient long lastTick; transient long count, maxDelaySeen, averageSum; start { doEvery(interval, r tick); } void tick enter { long now = sysNow(); long delay = now-lastTick; maxDelaySeen = max(maxDelaySeen, delay); ++count; averageSum += delay; } // API long average() { ret (averageSum+count/2)/count; } }