anchor.diff:  
       let estimate predictorsT observationsT =
           let parameters = Parameters.Empty
  -                            .Add("V_max",[|0.8|],eps,1.0,isLog=true,delay=0)
  -                            .Add("V_p",[|0.5|],eps,1.0,isLog=true,delay=0)
  -                            .Add("D_max",[|0.8|],eps,1.0,isLog=false,delay=0)
  +                            .Add("V_p3",[|0.8|],eps,1.0,isLog=true,delay=0)
  +                            .Add("V_p2",[|0.8|],eps,1.0,isLog=true,delay=0)
  +                            .Add("V_p1",[|0.8|],eps,1.0,isLog=true,delay=0)
  +                            .Add("D_p3",[|0.8|],eps,1.0,isLog=true,delay=0)
  +                            .Add("D_p2",[|0.8|],eps,1.0,isLog=true,delay=0)
  +                            .Add("D_p1",[|0.8|],eps,1.0,isLog=true,delay=0)
                               .Add("D_p",[|0.5|],eps,1.0,isLog=true,delay=0)
  +                            .Add("Area_vp",[|0.5|],eps,1.0,isLog=true,delay=0)
  +                            .Add("Area_dp",[|0.5|],eps,1.0,isLog=true,delay=0)
                               .Add("V_bg",[|0.1|],eps,0.5,isLog=true,delay=0)
  -                            .Add("D_bg",[|0.5|],eps,1.0,isLog=false,delay=0)
  +                            .Add("D_bg",[|0.5|],eps,1.0,isLog=true,delay=0)
                               //.Add("D_bg",[|0.5|])
                               .Add("D",[|1500.0|],1200.0,1800.0,isLog=false,delay=0)
                               .Add("Sigma",[|0.01|],eps, 0.5,isLog=true,delay=0)                            
  
positive.code:         if area = 0.0 then
              None
          else
              //max area is considered to be ~ 20
              //should give velocity of 1.0
              //thus
              let k = v_max * (1.0 - v_p) / max_hole
              let b = v_max * v_p
              let velocity = k * area + b                    
              #if DEBUG
              assert(abs(k* max_hole + b - v_max)<1e-14)
              assert(abs(k*0.0 + b - v_max*v_p)<1e-14)
              #endif
              let k = d_max * (1.0 - d_p) / max_hole
              let b = d_max * d_p
              let density = k * area + b                    
              #if DEBUG
              assert(abs(k* max_hole + b - d_max)<1e-14)
              assert(abs(k*0.0 + b - d_max*d_p)<1e-14)
              #endif            
              let burst = {
                  EmergenceTime=emergence_tick;
                  Velocity=velocity;
                  Density= density
              }
              Some(burst)
      Table.Map ["ts";"Relative_CH_CorrectSphereArea_j"] generatePulse predictorsT |> Seq.choose (fun b -> b)  |> List.ofSeq
  
negative.code: //             |> Array.Parallel.map current_lglk
               |> Array.map current_lglk
               |> Array.sum         
      iteration_counter <- iteration_counter + 1
      if res>bestLglk then        
          printfn "\n----------"
          printfn "\niteration:%d\tlog-likelihood:%g\timprovement:%g" iteration_counter res (res-bestLglk)
          printfn "Vfunc nodes:\t(%g;%g) (%g;%g) (%g;%g)" 0.0 (v3p*v2p*v1p) (vap*max_hole) (v3p*v2p) max_hole v3p
          printfn "Dfunc nodes:\t(%g;%g) (%g;%g) (%g;%g)"0.0 (d3p*d2p*d1p) (dap*max_hole) (d3p*d2p) max_hole d3p
          printfn "background wind\tV:%g\tD:%g" v_b d_b
          printfn "Noise sigma:\t%g" Sigma
          printfn "Earth distance:\t%f" D
          System.Console.Beep(5000,300)
          bestLglk <- res
      else
          printf "."
  
      res    
  
  [<EntryPoint>]
  let main argv =     
      //tests
      let (a,b,c) = get2ndPolyCoefs -1.0 0.0 1.0 2.0 1.0 2.0
      assert(a=1.0)
      assert(b=0.0)
      assert(c=1.0)
  
      let (a,b,c) = get2ndPolyCoefs 0.0 1.0 2.0 2.0 1.0 6.0
      assert(a=3.0)
      assert(b= -4.0)
      assert(c=2.0)
      printfn "Basic tests passed"
  
      //config
      let doEstimate = true
      let thinnObs = false
  