diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,8 @@
+## 0.2.1.0 (2016-08-11)
+
+ * Send distributions as gauges and counters.
+ * Update examples.
+
 ## 0.2.0.4 (2016-05-28)
 
  * GHC 8.0 support.
diff --git a/System/Remote/Monitoring/Statsd.hs b/System/Remote/Monitoring/Statsd.hs
--- a/System/Remote/Monitoring/Statsd.hs
+++ b/System/Remote/Monitoring/Statsd.hs
@@ -37,6 +37,7 @@
 import qualified Network.Socket as Socket
 import qualified Network.Socket.ByteString as Socket
 import qualified System.Metrics as Metrics
+import qualified System.Metrics.Distribution.Internal as Distribution
 import System.IO (stderr)
 
 #if __GLASGOW_HASKELL__ >= 706
@@ -170,18 +171,31 @@
     diffMetric (Metrics.Label n1) (Metrics.Label n2)
         | n1 == n2  = Nothing
         | otherwise = Just $ Metrics.Label n2
-    -- Distributions are assumed to be non-equal.
+    diffMetric (Metrics.Distribution d1) (Metrics.Distribution d2)
+        | Distribution.count d1 == Distribution.count d2 = Nothing
+        | otherwise = Just $ Metrics.Distribution $ d2
+            { Distribution.count = Distribution.count d2 - Distribution.count d1
+            }
     diffMetric _ _  = Nothing
 
 flushSample :: Metrics.Sample -> Socket.Socket -> StatsdOptions -> IO ()
-flushSample sample socket opts = do
-    forM_ (M.toList $ sample) $ \ (name, val) ->
+flushSample sample socket opts =
+    forM_ (M.toList sample) $ \ (name, val) ->
         let fullName = dottedPrefix <> name <> dottedSuffix
         in  flushMetric fullName val
   where
-    flushMetric name (Metrics.Counter n) = send "|c" name (show n)
-    flushMetric name (Metrics.Gauge n)   = send "|g" name (show n)
-    flushMetric _ _                      = return ()
+    flushMetric name (Metrics.Counter n)      = send "|c" name (show n)
+    flushMetric name (Metrics.Gauge n)        = send "|g" name (show n)
+    flushMetric name (Metrics.Distribution d) = sendDistribution name d
+    flushMetric _    (Metrics.Label _)        = return ()
+
+    sendDistribution name d = do
+      send "|g" (name <> "." <> "mean"    ) (show $ Distribution.mean     d)
+      send "|g" (name <> "." <> "variance") (show $ Distribution.variance d)
+      send "|c" (name <> "." <> "count"   ) (show $ Distribution.count    d)
+      send "|g" (name <> "." <> "sum"     ) (show $ Distribution.sum      d)
+      send "|g" (name <> "." <> "min"     ) (show $ Distribution.min      d)
+      send "|g" (name <> "." <> "max"     ) (show $ Distribution.max      d)
 
     isDebug = debug opts
     dottedPrefix = if T.null (prefix opts) then "" else prefix opts <> "."
diff --git a/ekg-statsd.cabal b/ekg-statsd.cabal
--- a/ekg-statsd.cabal
+++ b/ekg-statsd.cabal
@@ -1,5 +1,5 @@
 name:                ekg-statsd
-version:             0.2.0.4
+version:             0.2.1.0
 synopsis:            Push metrics to statsd
 description:
   This library lets you push system metrics to a statsd server.
@@ -24,7 +24,7 @@
     ekg-core >= 0.1 && < 1.0,
     network < 2.7,
     text < 1.3,
-    time < 1.6,
+    time < 1.7,
     unordered-containers < 0.3
 
   default-language:    Haskell2010
