anchor.diff:  %% @doc Terminate any running clients gracefully issuing final
   %%      synchronization.
   terminate(#state{client_list=ClientList}=State) ->
  -    TerminateFun = fun(Pid) -> Pid ! {runner, terminate} end,
  -    lists:map(TerminateFun, ClientList),
  +    TerminateFun = fun(Pid) ->
  +            Pid ! {runner, terminate},
  +            %% Message might be queued, if synchronization is in
  +            %% progress, which would trigger a race with shutdown, so
  +            %% wait for the client to explicitly ack the terminate call.
  +            receive
  +                {runner, ok} ->
  +                    ok
  +            end
  +    end,
  +    lists:foreach(TerminateFun, ClientList),
  +    lager:info("All clients terminated!"),
       {ok, State}.
   
   %% @doc Simulate clients viewing advertisements.
  
positive.code:     {ok, {Servers, _, _, _}} = lasp:declare(SetType),
  
      %% Get the current advertisement list.
      {ok, {_, _, _, AdList0}} = lasp:read(AdsWithContracts, {strict, undefined}),
      AdList = SetType:value(AdList0),
  
      %% For each advertisement, launch one server for tracking it's
      %% impressions and wait to disable.
      lists:map(fun(Ad) ->
                  ServerPid = spawn_link(?MODULE, server, [Ad, Ads]),
                  {ok, _} = lasp:update(Servers, {add, ServerPid}, undefined),
                  ServerPid
  
negative.code: client(SetType, CounterType, SyncInterval, Runner, Id, AdsWithContractsId, AdsWithContracts0, Counters0) ->
      receive
          {runner, terminate} ->
              Runner ! {runner, ok},
              ok;
          {runner, view_ad} ->
              Counters = case dict:size(Counters0) of
  