anchor.diff:    when DeadlineNS =< NowNS ->
       #tick{id = Id,
             duration_ns = DurationNS,
  -          generation = Generation}=Tick,
  -    {noreply, NewState} = Mod:handle_tick(Id, Generation, State),
  -    NewTick = Tick#tick{deadline_ns = DeadlineNS + DurationNS,
  -                        generation = Generation + 1},
  +          generation = Generation,
  +          skip_missed = SkipMissed} = Tick,
  +    GenerationsSkip = case SkipMissed of
  +                        false -> 0;
  +                        true  -> trunc((NowNS - DeadlineNS) / DurationNS)
  +                      end,
  +    {noreply, NewState} = Mod:handle_tick(Id, Generation + GenerationsSkip, State),
  +    NewTick = Tick#tick{deadline_ns = DeadlineNS + ((1 + GenerationsSkip) * DurationNS),
  +                        generation = Generation + GenerationsSkip + 1},
       handle_tick_deadlines(NewState, UntriggeredTicks, NowNS, Mod, [NewTick | TriggeredTicks]);
   handle_tick_deadlines(State, UntriggeredTicks, _NowNS, _Mod, TriggeredTicks) ->
       {State, TriggeredTicks ++ UntriggeredTicks}.
  
positive.code: -type spawn_start_option() :: term().
  -export_type([spawn_start_option/0]).
  
  -type tick_start_option() :: {TickId :: term(), TickDuration :: pos_integer()}.
  -export_type([tick_start_option/0]).
  
  -ifdef(pre18).
  -type timestamp() :: non_neg_integer().
  
negative.code:           id :: term(),
            duration_ns :: pos_integer(),
            deadline_ns :: timestamp(),
            generation :: non_neg_integer(),
            skip_missed :: boolean()
  }).
  -type tick() :: #tick{}.
  
  