anchor.diff:  
   /// A simple double counter backed by a StepLong but using doubles. The value is the rate for the previous interval as defined by the step.
   type DoubleCounter(config : MonitorConfig, step : TimeSpan) =
  -    let stepSeconds = double step.TotalSeconds
  +    let stepMilliseconds = double step.TotalMilliseconds
       let count = new StepLong(step)
       let add (amount : double) =
           let current = count.GetCurrent()
  
positive.code:         member self.GetValue() = self.GetValue() :> obj
          member self.Config = self.Config
  
  /// Counter tracking the maximum count per second within a specified interval
  type PeakRateCounter(config : MonitorConfig, step) =
      let currentSecond = new AtomicLong()
      let currentCount = new AtomicLong()
  
negative.code:         if amount > 0.0 then add amount
      /// Increment the value by one
      member self.Increment() = self.Increment(1.0)
      /// Gets the rate per step
      member __.GetValue() =
          let datapoint = count.Poll()
          if datapoint = Datapoint.Empty then Double.NaN
          else (datapoint.Value |> BitConverter.Int64BitsToDouble) / stepMilliseconds
      /// Gets the configuration
      member __.Config = config.WithTag(DataSourceType.Rate)
  
  