anchor.diff:        // stop if we would hit the pole in the next timestep
         if (len <= kMinDistance) {
           Pole p = srcs[rng.nextInt(srcs.length)];
  -        _pos.xyz = p.Pos().xyz;
  +        _pos = p.Pos() + RandomVector(rng, 20.0 * dt);
           print("too close: ${len}");
           return;
         }
  
positive.code: const int kNumFireworkParticles = 200;
  const double kMaxDistance = 100.0;
  const double kMinDistance = 0.2;
  const int kPoles = 10;
  const int kIons = 100000;
  
  String DumpVec(VM.Vector3 v) {
    return "${v.x} ${v.y} ${v.z}";
  
negative.code:       // stop if we are out of bounds
        if (len > kMaxDistance) {
          Pole p = srcs[rng.nextInt(srcs.length)];
          _pos = p.Pos() + RandomVector(rng, 20.0 *  dt);
          print("too far ${len}");
          return;
        }
  