anchor.diff:                                      #ch_mgr{proj=Proj1, myflu=MyFLU} = S) ->
       Epoch1 = Proj1#projection.epoch_number,
       case cl_read_latest_public_projection(S) of
  +        {needs_repair, FLUsRs, Extra, S3} ->
  +            if not ReadRepairP ->
  +                    {not_unanimous, todoxyz, [{results, FLUsRs}|Extra], S3};
  +               true ->
  +                    {_Status, S4} = do_read_repair(FLUsRs, Extra, S3),
  +                    do_cl_read_latest_public_projection(ReadRepairP, S4)
  +            end;
           {unanimous, Proj2, Extra, S3} when Proj2 == Proj1 ->
  -            {Proj2, Extra, S3};
  +            {unanimous, Proj2, Extra, S3};
           {unanimous, #projection{epoch_number=Epoch2}=Proj2, Extra, _S3}
             when Epoch2 < Epoch1 orelse
                  (Epoch2 == Epoch1 andalso Proj2 /= Proj1) ->
               exit({invariant_error, mine, Proj1, cl_unanimous, Proj2, extra, Extra});
           {unanimous, #projection{epoch_number=Epoch2}=Proj2, Extra, S3}
             when Epoch2 > Epoch1 ->
  +            io:format(user, "\nHEY! This probably needs an update!\n\n", []),
               Proj2b = update_projection_dbg2(
                          Proj2, [{hooray, {date(), time()}}|Extra]),
               ok = machi_flu0:proj_write(MyFLU, Epoch2, private, Proj2b),
  -            {Proj2, Extra, S3#ch_mgr{proj=Proj2b}};
  -        {needs_work, FLUsRs, Extra, S3} ->
  -            if not ReadRepairP ->
  -                    {not_unanimous, [{results, FLUsRs}|Extra], S3};
  -               true ->
  -                    {_Status, S4} = do_read_repair(FLUsRs, Extra, S3),
  -                    {not_unanimous, Extra, S4}
  -            end
  -    end.
  -
  -cl_read_latest_public_projection(#ch_mgr{proj=Proj}=S) ->
  -    #projection{all_members=All_list} = Proj,
  +            {unanimous, Proj2, Extra, S3#ch_mgr{proj=Proj2b}}
  +    end.
  +
  +cl_read_latest_public_projection(#ch_mgr{proj=CurrentProj}=S) ->
  +    #projection{all_members=All_list} = CurrentProj,
       {_UpNodes, Partitions, S2} = calc_up_nodes(S),
       DoIt = fun(X) ->
                      case machi_flu0:proj_read_latest(X, public) of
  
positive.code:     Rs = [perhaps_call_t(S, Partitions, FLU, fun() -> DoIt(FLU) end) ||
               FLU <- All_list],
      FLUsRs = lists:zip(All_list, Rs),
      case lists:usort(Rs) of
          [P] when is_record(P, projection) ->
              U_FLUs = [FLU || {FLU, Projx} <- FLUsRs, Projx == P],
              Extra = [{all_members_replied, length(Rs) == length(All_list)}],
              {unanimous, P, [{unanimous_flus,U_FLUs}|Extra], S2};
          _ ->
              {needs_work, FLUsRs, [flarfus], S2} % todo?
      end.
  
  %% 1. Do the results contain a projection?
  
negative.code:                         true        -> S
                       end};
  handle_call({test_read_latest_public_projection, ReadRepairP}, _From, S) ->
      {Perhaps, Val, ExtraInfo, S2} =
          do_cl_read_latest_public_projection(ReadRepairP, S),
      Res = {Perhaps, Val, ExtraInfo},
      {reply, Res, S2};
  handle_call(_Call, _From, S) ->
      {reply, whaaaaaaaaaa, S}.
  
  