anchor.diff:  handle_cast(Msg, State) ->
       system_log:error("Unhandled cast: ~p", [Msg]),
       {stop, {unhandled_cast, Msg}, State}.
  +
  +handle_info(poll_vars, #s{worker_starter = undefined,
  +                          current_pool_size = CurrentPoolSize,
  +                          worker_starter_fun = WorkerStartFun,
  +                          workers_num_fun = WorkersNumFun,
  +                          workers = Tid} = State) ->
  +    {_, WorkerNumber, _} = WorkersNumFun(),
  +    CurrentWorkerNumber = ets:info(Tid, size),
  +
  +    NewState =
  +        if
  +            WorkerNumber > CurrentPoolSize ->
  +                WorkerStarter =
  +                    erlang:spawn_monitor(fun () ->
  +                        WorkerStartFun(WorkerNumber - CurrentWorkerNumber, CurrentWorkerNumber)
  +                    end),
  +                State#s{current_pool_size = WorkerNumber, worker_starter = WorkerStarter};
  +            WorkerNumber < CurrentWorkerNumber ->
  +                kill_some_workers(CurrentWorkerNumber - WorkerNumber, Tid),
  +                State;
  +            true ->
  +                State
  +        end,
  +
  +    {noreply, restart_pollvars_timer(NewState)};
  +
  +handle_info(poll_vars, #s{} = State) ->
  +    {noreply, State};
   
   handle_info({'DOWN', Ref, _, _, normal}, #s{worker_starter = {_, Ref}} = State) ->
       maybe_stop(State#s{worker_starter = undefined});
  
positive.code: %%%===================================================================
  
  start_workers(Pool, Env, NumNodes, Offset, #s{} = State) ->
      #operation{name = pool, args = [PoolOpts, Script], meta = Meta} = Pool,
      Eval = fun (E) -> mzbl_interpreter:eval_std(E, Env) end,
      Name = proplists:get_value(pool_name, Meta),
      [Size] = Eval(mzbl_ast:find_operation_and_extract_args(size, PoolOpts, [undefined])),
      [PerNode] = Eval(mzbl_ast:find_operation_and_extract_args(per_node, PoolOpts, [undefined])),
      StartDelay = case mzbl_ast:find_operation_and_extract_args(worker_start, PoolOpts, [undefined]) of
  
negative.code: 
  -include_lib("mzbench_language/include/mzbl_types.hrl").
  
  -define(POLLVARS_INTERVAL_MS, 1000).
  
  -record(s, {
      workers  = [] :: ets:tid(),
      succeed  = 0 :: non_neg_integer(),
      failed   = 0 :: non_neg_integer(),
      name     = undefined :: string(),
      worker_starter = undefined :: undefined | {pid(), reference()},
      current_pool_size = 0 :: non_neg_integer(),
      worker_starter_fun = undefined :: fun(),
      workers_num_fun = undefined :: fun(),
      poll_vars_timer = undefined :: reference()
  }).
  
  %%%===================================================================
  