diff --git a/decor/moving-average.go b/decor/moving-average.go index 5bca2fc..ce2cda7 100644 --- a/decor/moving-average.go +++ b/decor/moving-average.go @@ -51,18 +51,22 @@ } type medianEwma struct { + count uint + median MovingAverage MovingAverage - median MovingAverage } -func (s medianEwma) Add(v float64) { +func (s *medianEwma) Add(v float64) { s.median.Add(v) - s.MovingAverage.Add(s.median.Value()) + s.count++ + if s.count >= 3 { + s.MovingAverage.Add(s.median.Value()) + } } // NewMedianEwma is ewma based MovingAverage, which gets its values from median MovingAverage. func NewMedianEwma(age ...float64) MovingAverage { - return medianEwma{ + return &medianEwma{ MovingAverage: ewma.NewMovingAverage(age...), median: NewMedian(), }