anchor.diff:      [{c, _, #vstate{o = C}}] = ets:lookup(Ets, c),
       [{d, _, #vstate{o = D}}] = ets:lookup(Ets, d),
       [{tpos, OldPos}] = ets:lookup(Ets, tpos),
  +    Delta = abs(clamp(round(5*(D-C)), -4, 4)),
  +    [{delta, X}] = ets:lookup(Ets, delta),
  +    ets:insert(Ets, {delta, X + Delta}),
       RawPos = OldPos + clamp(round(5*(D-C)), -4, 4),
       if RawPos < 0 ->
               NewPos = RawPos + ?AREA_WIDTH;
  
positive.code: %    io:format("~P~n~n", [ets:match_object(Ets, '_'), 100]),
      nil.
  
  block_run(Ets) ->
      new_block(Ets),
      genetica_utils:repeatedly(?AREA_HEIGHT, fun() -> step(Ets) end),
      sense(Ets),
      Sensed = ets:select(Ets, ?ETS_INTEGERS),
      case ets:lookup(Ets, block) of
          [#block{size=S, y=0, x=_}] ->
              if S >= ?TRACKER_SIZE ->
                      {avoid, lists:sum(Sensed)/?TRACKER_SIZE};
                 S < ?TRACKER_SIZE ->
                      {capture, lists:sum(Sensed)/S}
              end
      end.
  
  simulate_run(G) ->
  %    io:format("whole:~n~p~n~n", [G]),
      Ets = ets:new(x, [set]),
      Firsts = lists:zip([#edge{from=F, to=T} || T <- [a, b],
                                                 F <- [1, 2, 3, 4, 5, a, b]],
                         lists:sublist(G, 2*7)),
  
negative.code:             gen_tcp:send(Sock, io_lib:fwrite("~w~n", [Floats])),
              ets:delete_all_objects(genetica_cognitive_ets),
              %% ^ hack, flip over to gen_server for next task.
              random:seed(now()),
              Refit = genetica_utils:pmap(fun refit/1, Pop),
              ets:insert(genetica_cognitive_ets, Refit),
              ok
      end.
  
  