anchor.diff:  %    returns list of sync degrees per round, first value is initial sync degree
   % @end
   -spec start_sync(Config, Nodes::Int, DBSize::Int, DBParams,
  -                 Rounds::Int, Fpr, RRConf::Config) -> {Start::Status, End::Status}
  -when
  +                 Rounds::Int, Fpr, RRConf::Config, CompFun) -> true when
       is_subtype(Config,      [tuple()]),
       is_subtype(Int,         pos_integer()),
       is_subtype(DBParams,    [db_generator:db_parameter()]),
       is_subtype(Fpr,         float()),
  -    is_subtype(Status,      db_generator:db_status()).
  -start_sync(Config, NodeCount, DBSize, DBParams, Rounds, Fpr, RRConfig) ->
  +    is_subtype(CompFun,     fun((T, T) -> boolean())).
  +start_sync(Config, NodeCount, DBSize, DBParams, Rounds, Fpr, RRConfig, CompFun) ->
       NodeKeys = lists:sort(get_symmetric_keys(NodeCount)),
       build_symmetric_ring(NodeCount, Config, [RRConfig, {rr_bloom_fpr, Fpr}]),
       erlang:put(?DBSizeKey, ?REP_FACTOR * DBSize),
  
positive.code: simple(Config) ->
      Method = proplists:get_value(ru_method, Config),
      FType = proplists:get_value(ftype, Config),
      {Start, End} = start_sync(Config, 4, 1000, [{fprob, 10}, {ftype, FType}], 
                                1, 0.1, get_rep_upd_config(Method)),
      ?compare(fun erlang:'<'/2, sync_degree(Start), sync_degree(End)).
  
  multi_round(Config) ->
      Method = proplists:get_value(ru_method, Config),
      FType = proplists:get_value(ftype, Config),
      {Start, End} = start_sync(Config, 6, 1000, [{fprob, 10}, {ftype, FType}], 
                                3, 0.1, get_rep_upd_config(Method)),
      ?compare(fun erlang:'<'/2, sync_degree(Start), sync_degree(End)).
  
  multi_round2(Config) ->
      Method = proplists:get_value(ru_method, Config),
      FType = proplists:get_value(ftype, Config),
      _RUConf = get_rep_upd_config(Method),
      RUConf = [{rr_trigger_probability, 40} | proplists:delete(rr_trigger_probability, _RUConf)],
      {Start, End} = start_sync(Config, 6, 1000, [{fprob, 10}, {ftype, FType}], 
                                3, 0.1, RUConf),
      ?compare(fun erlang:'<'/2, sync_degree(Start), sync_degree(End)).
  
  dest(Config) ->
      %parameter
  
negative.code:     FType = proplists:get_value(ftype, Config),
      OldConf = get_rep_upd_config(Method),
      Conf = lists:keyreplace(rr_max_items, 1, OldConf, {rr_max_items, 500}),    
      start_sync(Config, 4, 1000, [{fprob, 100}, {ftype, FType}],
                 2, 0.2, Conf, fun erlang:'<'/2).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Basic Functions Group
  