anchor.diff:              true ->
                   {?ST_SUSPENDING, 0};
               false ->
  -                ok = run(Id, IsDiagnosing, IsRecovering),
                   {?ST_RUNNING,
                    decr_batch_of_msgs_fun(BatchProcs, StepBatchProcs)}
           end,
  
positive.code:     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}};
  
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}}.
  
  