anchor.diff:  
   num() ->
       choose(2, 5).
  -    %% return(3).
   
   cr_count(Num) ->
  -    Approx = 10, % ad-hoc
  -    (Approx div Num) + 1.
  +    Num * 3.
  +
  +%% Returns a list like
  +%% `[{#p_srvr{name=a, port=7501, ..}, "./eqc/data.eqc.a/"}, ...]'
  +all_list_extra(Num) ->
  +    {PortBase, DirBase} = get_port_dir_base(),
  +    [begin
  +         FLUNameStr = [$a + I - 1],
  +         FLUName = list_to_atom(FLUNameStr),
  +         MgrName = machi_flu_psup:make_mgr_supname(FLUName),
  +         {#p_srvr{name=FLUName, address="localhost", port=PortBase+I,
  +                  props=[{chmgr, MgrName}]},
  +          DirBase ++ "/data.eqc." ++ FLUNameStr}
  +     end || I <- lists:seq(1, Num)].
   
   %% Generator for possibly assymmetric partition information
   partition(FLUNames) ->
  
positive.code: -include_lib("eqc/include/eqc.hrl").
  -include_lib("eqc/include/eqc_statem.hrl").
  -include_lib("eunit/include/eunit.hrl").
  
  %% ETS table names
  -define(WRITTEN_TAB,  written).  % Successfully written data
  
negative.code: %% - Operations other than append, write, trim
  %% - Use checksum instead of binary to save memory
  %% - More variety for partitioning pattern: non-constant failure
  %% - Stop and restart
  %% - Suspend and resume of some erlang processes
  
  -module(machi_ap_repair_eqc).
  
  