anchor.diff:      member __.Increment() = value.Increment(1L) |> ignore
       /// Increment the counter by the specified amount
       member __.Increment(amount) = if amount > 0L then value.Increment(amount) |> ignore
  -    /// Gets rate of events per second
  +    /// Gets rate of events per step
       member __.GetValue() : double =
           let datapoint = value.Poll()
           if datapoint = Datapoint.Empty then Double.NaN
  
positive.code:         if amount > 0.0 then add amount
      /// Increment the value by one
      member self.Increment() = self.Increment(1.0)
      /// Gets the rate per second
      member __.GetValue() =
          let datapoint = count.Poll()
          if datapoint = Datapoint.Empty then Double.NaN
          else (datapoint.Value |> BitConverter.Int64BitsToDouble) / stepSeconds
      /// Gets the configuration
      member __.Config = config.WithTag(DataSourceType.Rate)
  
  
negative.code:         member self.GetValue() = self.GetValue() :> obj
          member self.Config = self.Config
  
  /// Counter tracking the maximum count per step within a specified interval
  type PeakRateCounter(config : MonitorConfig, step) =
      let currentSecond = new AtomicLong()
      let currentCount = new AtomicLong()
  