anchor.diff:      Interval_1 = decr_interval_fun(Interval, StepInterval),
   
       NextStatus = ?ST_RUNNING,
  -    timer:apply_after(timer:seconds(1), ?MODULE, run, [Id, IsDiagnosing, IsRecovering]),
       {next_state, NextStatus, State#compaction_state{num_of_batch_procs = BatchProcs_1,
                                                       interval = Interval_1,
                                                       status = NextStatus}};
  
positive.code:             true ->
                  {?ST_SUSPENDING, 0};
              false ->
                  ok = run(Id, IsDiagnosing, IsRecovering),
                  {?ST_RUNNING,
                   decr_batch_of_msgs_fun(BatchProcs, StepBatchProcs)}
          end,
  
negative.code:                                                     interval = Interval_2,
                                                      status = NextStatus}};
  
  running(_, State) ->
      NextStatus = ?ST_RUNNING,
      {next_state, NextStatus, State#compaction_state{status = NextStatus}}.
  
  
  -spec(running( _, _, #compaction_state{}) ->
               {next_state, ?ST_SUSPENDING|?ST_RUNNING, #compaction_state{}}).
  running(_, From, State) ->
      gen_fsm:reply(From, {error, badstate}),
      NextStatus = ?ST_RUNNING,
      {next_state, NextStatus, State#compaction_state{status = NextStatus}}.
  
  