anchor.diff:      _lastTimeMs = timeMs;
       orbit.azimuth += 0.001;
   
  -    /*
  -    int n = 0;
  -    for (Ion ion in ions) {
  -      if (elapsed == 0.0) continue;
  -      ion.Update(srcPoles, dstPoles, rng, elapsed / 1000.0);
  -      vertices[n + 0] = ion.Pos().x;
  -      vertices[n + 1] = ion.Pos().y;
  -      vertices[n + 2] = ion.Pos().z;
  -      n += 3;
  -    }
  -    md.ChangeVertices(vertices);
  -    */
  -
  +    if (programSprites.enabled && elapsed > 0.0) {
  +      int n = 0;
  +      for (Ion ion in ions) {
  +        ion.Update(srcPoles, dstPoles, rng, elapsed / 1000.0);
  +        vertices[n + 0] = ion.Pos().x;
  +        vertices[n + 1] = ion.Pos().y;
  +        vertices[n + 2] = ion.Pos().z;
  +        n += 3;
  +      }
  +      md.ChangeVertices(vertices);
  +    }
       orbit.animate(elapsed);
   
       phase.draw([perspective]);
   
       HTML.window.animationFrame.then(animate);
       fps.UpdateFrameCount(timeMs);
  -    chronosGL.copyBufferSubData(
  -        GL_TRANSFORM_FEEDBACK_BUFFER, GL_ARRAY_BUFFER, 0, 0, kIons * 3);
  +    if (pssp.enabled) {
  +      chronosGL.bindBuffer(GL_ARRAY_BUFFER, md1.GetBuffer(aVertexPosition));
  +      chronosGL.bindBuffer(
  +          GL_TRANSFORM_FEEDBACK_BUFFER, md2.GetBuffer(aVertexPosition));
  +      chronosGL.copyBufferSubData(
  +          GL_TRANSFORM_FEEDBACK_BUFFER, GL_ARRAY_BUFFER, 0, 0, kIons * 3);
  +    }
     }
   
     animate(0.0);
  
positive.code: 
  const double kMaxDistance = 100.1;
  const double kMinDistance = 0.2;
  
  List<ShaderObject> createFireWorksShader() {
    return [
  
negative.code:     ..SetUniform(uPointSize, 200.0);
    GeometryBuilder gb = new GeometryBuilder(true);
    for (var i = 0; i < kIons; i++) {
      gb.AddVertex(new VM.Vector3.zero());
    }
    MeshData md = GeometryBuilderToMeshData("", chronosGL, gb);
    RenderProgram programSprites =
        phase.createProgram(createPointSpritesShader());
    programSprites.add(new Node("ions", md, mat));
  
    RenderProgram pssp = phase.createProgram(createFireWorksShader());
    MeshData md2 = GeometryBuilderToMeshData("", chronosGL, gb);
    MeshData md1 = GeometryBuilderToMeshData("", chronosGL, gb);
  
  