anchor.diff:  
           let viewTrafo = DefaultCameraController.control win.Mouse win.Keyboard win.Time view
   
  +        let colors = [| C4b.Gray; C4b.Green; C4b.Red; C4b.VRVisGreen; C4b.Blue; |]
  +
           let rand = Random()
  -        let randomPoints (bounds : Box3d) pointCount =
  +        let randomPoints (bounds : Box3d) level pointCount =
               let randomV3f() = V3d(rand.NextDouble(), rand.NextDouble(), rand.NextDouble()) * bounds.Size + bounds.Min |> V3f.op_Explicit
  -            let randomColor() = C4b(rand.NextDouble(), rand.NextDouble(), rand.NextDouble(), 1.0)
  +            let randomColor() = colors.[level]// C4b(rand.NextDouble(), rand.NextDouble(), rand.NextDouble(), 1.0)
   
               IndexedGeometry(
                   Mode = IndexedGeometryMode.PointList,
  -                IndexArray = Array.init pointCount id,
                   IndexedAttributes = 
                       SymDict.ofList [
                            DefaultSemantic.Positions, Array.init pointCount (fun _ -> randomV3f()) :> Array
  
positive.code:         use app = new OpenGlApplication()
          let win = app.CreateSimpleRenderWindow(1)
     
          let view = CameraView.LookAt(V3d(150.0,150.0,150.0), V3d(50,50,50), V3d.OOI)
          let perspective = 
              win.Sizes 
                |> Mod.map (fun s -> Frustum.perspective 60.0 0.1 1000.0 (float s.X / float s.Y))
  
negative.code: 
          let scene = 
              aset {
                  for x in 0 .. 20 do
                      for y in 0 .. 20 do
                          for z in 0 .. 20 do
                              let bounds = Box3d.FromMinAndSize(V3d(x,y,z), V3d.III)
                              yield { bounds = bounds; levels = 3; createLevel = fun level -> randomPoints bounds level ((1 <<< level)*5) }
              }
  
          let getLodRepr (vt : IMod<CameraView>) (proj : IMod<Frustum>) (g : Geometry) : IMod<IndexedGeometry> =
              let mutable current = None
              adaptive  {
                  let! vt = vt
                  let level = 
                      match V3d.Distance(g.bounds.GetClosestPointOn vt.Location, vt.Location) with
                      | v when v < 4.0 -> 0
                      | v when v < 10.0 -> 0
                      | v when v < 20.0 -> 0
                      | _ -> 0
                  match current with 
                   | Some (oldLevel,g) when oldLevel = level -> 
                      return g
                   | _ -> 
                      //printfn "%A" level
                      let g = g.createLevel level
                      current <- Some (level,g)
                      return g
  