anchor.diff:          let gapMillisecs = int(rng.NextDouble() * 500.0 + 250.0)
   
           sm.Add(now, value)
  -        cnt <- cnt + 1
  -        if cnt % 40 = 0 then trend <- -trend
   
           let task = async {
                           while not ct.IsCancellationRequested do
                               do! Async.Sleep gapMillisecs
                               let time = DateTime.UtcNow
  +                            Interlocked.Increment(totalInputs) |> ignore
  +                            Interlocked.Increment(chunkInputs) |> ignore
                               value <- value*(1.0 + rng.NextDouble()*0.002 - 0.001 + 0.001 * trend)
                               sm.Add(time, value)
                               cnt <- cnt + 1
  
positive.code:     let index : Series<DateTime, float> = 
          arrayOfContinuousSeries.Zip(fun k vArr -> vArr |> Array.average)
  
      index.Do((fun k v -> 
                  printfn "Index: %A = %f" k v
                  ), ct)
  
      Thread.Sleep(10000000)
  
negative.code:     let ct = cts.Token
      let rng = System.Random()
  
      // monitoring variables
      let totalOutputs = ref 0
      let chunkOutputs = ref 0
      let totalInputs = ref 0
      let chunkInputs = ref 0
  
      let makeQuoteSource () : Series<DateTime, float> = // data is produced outside
          let mutable value = 1.0
          let sm = SortedMap()
  