anchor.diff:          let predAtEarth = avgVelocity D
           let mu = V_b + predAtEarth //base level plus pulses        
           if System.Double.IsNaN mu then
  -            improbable
  +            log improbable
           else
               let distribution = Statistics.Normal(mu,Sigma)
  -            let lglk = log_pdf distribution (v * 60.0 * 60.0)
  +            let lglk = log_pdf distribution v
  +            //printfn "mu:%g\tv:%g\tsigma:%g\tlglk:%g" mu v Sigma lglk
               lglk
               
  -    let res = Array.Parallel.map current_lglk a |> Seq.sum         
  -    printf "."
  +    let res = data |> Seq.filter (fun t -> not(System.Double.IsNaN(snd t))) |> Array.ofSeq |> Array.Parallel.map current_lglk |> Seq.sum         
  +    if res>bestLglk then
  +        printfn "\nlglk:%g\tV_b:%g\tV_k:%g\tS_0:%g\tP_w:%g\tSig:%g\tD:%g" res V_b V_k S_0 P_w Sigma D
  +        bestLglk <- res
  +    else
  +        printf "."
       res
           
   
  
positive.code: 
      let wind = getWind predictorsT S_0 V_k P_w V_b
      
      let a = Table.Map ["t";"velocity"] (fun (t:float) (v:float) -> (t,v)) observationsT |> Array.ofSeq
  
      let current_lglk p =
          let t,v = p
  
negative.code:             }
              Some(pulse)
      Table.Map ["t";"CHarea"] generatePulse predictorsT |> Seq.choose (fun a -> a) |> List.ofSeq
  
  let mutable bestLglk = System.Double.NegativeInfinity
  
  let logLikelihood (predictorsT: Table) (observationsT: Table) (p: Parameters) =        
      let V_k = p.GetValue "V_k" //velocity growth slope
  