anchor.diff:  
         for block in vals.Split([| block |], StringSplitOptions.RemoveEmptyEntries) do
           let flds = block.Split([| tok |], StringSplitOptions.None) 
  -        { RawMeasurement.ID = Guid.NewGuid() 
  -          Time = DateTimeOffset.Parse(flds.[0])
  -          Pollutant = pollutant
  -          Station = station
  -          Value = float flds.[4] } |> rows.Add
  +        let value = float flds.[4]
  +        if isValidValue value then
  +          { RawMeasurement.ID = Guid.NewGuid(); Time = DateTimeOffset.Parse(flds.[0])
  +            Pollutant = pollutant; Station = station; Value = value } |> rows.Add
       with e -> failwithf "Failed to process observation:\n%A\n\n%A" obs e
     rows.ToArray()    
   
  
positive.code: "CREATE NONCLUSTERED INDEX IX_PollutantID ON [defra-airquality-monthly-measurement] (PollutantID)" 
  |> Database.executeCommandWithTimeout (60 * 15)
  
  "DROP INDEX IX_measurement_??? ON [defra-airquality-daily-measurement]" 
  |> Database.executeCommand
  
  
negative.code: Database.cleanupStorage "defra-airquality" [typeof<DailyMeasurement>; typeof<MonthlyMeasurement>]
  Database.initializeStorage "defra-airquality" [typeof<DailyMeasurement>; typeof<MonthlyMeasurement>]
  
  let p2 = storeMeasurements [1973 .. 2017] |> cluster.CreateProcess
  p2.Status
  p2.Result
  p2.ShowInfo()
  