diff --git a/arbor-monad-metric.cabal b/arbor-monad-metric.cabal
--- a/arbor-monad-metric.cabal
+++ b/arbor-monad-metric.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           arbor-monad-metric
-version:        1.1.1
+version:        1.2.0
 description:    Please see the README on Github at <https://github.com/arbor/arbor-monad-metric#readme>
 synopsis:       Core metric library for publishing metrics.
 category:       Metrics
diff --git a/src/Arbor/Monad/Metric.hs b/src/Arbor/Monad/Metric.hs
--- a/src/Arbor/Monad/Metric.hs
+++ b/src/Arbor/Monad/Metric.hs
@@ -35,6 +35,7 @@
 newMetricsIO = Metrics
   <$> STM.newTVarIO M.empty
   <*> STM.newTVarIO M.empty
+  <*> STM.newTVarIO M.empty
 
 extractValues :: forall k. ()
   => MetricFamily k
diff --git a/src/Arbor/Monad/Metric/Generic.hs b/src/Arbor/Monad/Metric/Generic.hs
--- a/src/Arbor/Monad/Metric/Generic.hs
+++ b/src/Arbor/Monad/Metric/Generic.hs
@@ -3,6 +3,7 @@
 
 module Arbor.Monad.Metric.Generic
   ( metric
+  , metric'
   ) where
 
 import Arbor.Monad.Metric.Type     (MetricFamily (..), Metrics, MonadMetrics)
diff --git a/src/Arbor/Monad/Metric/Type.hs b/src/Arbor/Monad/Metric/Type.hs
--- a/src/Arbor/Monad/Metric/Type.hs
+++ b/src/Arbor/Monad/Metric/Type.hs
@@ -38,11 +38,17 @@
   , tags :: S.Set Tag
   } deriving (Eq, Ord, Show, Generic)
 
+data GaugeCounter = GaugeCounter
+  { name :: Text
+  , tags :: S.Set Tag
+  } deriving (Eq, Ord, Show, Generic)
+
 type MetricMap k v = M.Map k (STM.TVar v)
 
 data Metrics = Metrics
-  { counters :: STM.TVar (MetricMap Counter (MetricState Counter))
-  , gauges   :: STM.TVar (MetricMap Gauge   (MetricState Gauge  ))
+  { counters      :: STM.TVar (MetricMap Counter      (MetricState Counter     ))
+  , gauges        :: STM.TVar (MetricMap Gauge        (MetricState Gauge       ))
+  , gaugeCounters :: STM.TVar (MetricMap GaugeCounter (MetricState GaugeCounter))
   } deriving (Generic)
 
 class (Monad m, MonadIO m) => MonadMetrics m where
@@ -92,3 +98,10 @@
   metricMapTVarOf = (^. the @"gauges")
   metricValueToState _ = Last
   metricStateToValue _ = getLast
+
+instance MetricFamily GaugeCounter where
+  type MetricValue GaugeCounter = Double
+  type MetricState GaugeCounter = Sum Double
+  metricMapTVarOf = (^. the @"gaugeCounters")
+  metricValueToState _ = Sum
+  metricStateToValue _ = getSum
