diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,13 @@
 # Revision history for interval-patterns
 
-## 0.4.0.0 - 2022-07-*
+## 0.5.0.0 - 2022-08-04
+
+* fix direction of `diffUTCTime` in `erlangs`
+* Remove export of `Data.Interval.Layers.nestingsAsc`
+  * also fix its implementation
+  * rely on `nestings` for external use
+
+## 0.4.0.0 - 2022-07-26
 
 * New functions
   * unidirectional `pattern (:--:)` for matching finite intervals regardless of `Bound`
diff --git a/interval-patterns.cabal b/interval-patterns.cabal
--- a/interval-patterns.cabal
+++ b/interval-patterns.cabal
@@ -1,6 +1,6 @@
 cabal-version: 3.0
 name: interval-patterns
-version: 0.4.0.0
+version: 0.5.0.0
 author: Melanie Brown
 synopsis: Intervals, and monoids thereof
 description: Please see the README at https://github.com/mixphix/interval-patterns
diff --git a/src/Data/Calendar.hs b/src/Data/Calendar.hs
--- a/src/Data/Calendar.hs
+++ b/src/Data/Calendar.hs
@@ -45,7 +45,7 @@
 -- all of the simultaneous happenings over a given span (on average)?
 erlangs :: (Real n) => Timeframe -> Event n -> Maybe Rational
 erlangs ix e =
-  let diff = realToFrac <<$>> diffUTCTime
+  let diff = realToFrac <<$>> flip diffUTCTime
    in liftA2
         (/)
         (Layers.integrate diff (realToFrac . getSum) ix e)
diff --git a/src/Data/Interval/Layers.hs b/src/Data/Interval/Layers.hs
--- a/src/Data/Interval/Layers.hs
+++ b/src/Data/Interval/Layers.hs
@@ -21,7 +21,6 @@
 
   -- ** Helper functions
   nestings,
-  nestingsAsc,
 ) where
 
 import Algebra.Lattice.Levitated
@@ -42,7 +41,7 @@
 instance (Ord x, Semigroup y) => Semigroup (Layers x y) where
   Layers s1 <> Layers s2 =
     let s = Map.toAscList $ Map.unionWith (<>) s1 s2
-     in Layers $ Map.fromAscList (nestingsAsc s)
+     in Layers $ Map.fromList (nestingsAsc s)
 
 instance (Ord x, Semigroup y) => Monoid (Layers x y) where
   mempty = Layers mempty
@@ -197,45 +196,45 @@
   [(Interval x, y)]
 nestingsAsc = \case
   (i', iy) : (j', jy) : js -> case I.adjacency i' j' of
-    Before i j -> (i, iy) : nestingsAsc ((j, jy) : js)
-    Meets i j k -> (i, iy) : nestingsAsc ((j, iy <> jy) : (k, jy) : js)
+    Before i j -> (i, iy) : nestings ((j, jy) : js)
+    Meets i j k -> (i, iy) : nestings ((j, iy <> jy) : (k, jy) : js)
     Overlaps i j k ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) :
         (k, jy) : js
     Starts i j ->
-      nestingsAsc $
+      nestings $
         (i, iy <> jy) :
         (j, jy) : js
     During i j k ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) :
         (k, jy) : js
     Finishes i j ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) : js
-    Identical i -> (i, iy <> jy) : nestingsAsc js
+    Identical i -> (i, iy <> jy) : nestings js
     FinishedBy i j ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) : js
     Contains i j k ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) :
         (k, jy) : js
     StartedBy i j ->
-      nestingsAsc $
+      nestings $
         (i, iy <> jy) :
         (j, jy) : js
     OverlappedBy i j k ->
-      nestingsAsc $
+      nestings $
         (i, iy) :
         (j, iy <> jy) :
         (k, jy) : js
-    MetBy i j k -> (i, iy) : nestingsAsc ((j, iy <> jy) : (k, jy) : js)
-    After i j -> (i, iy) : nestingsAsc ((j, jy) : js)
+    MetBy i j k -> (i, iy) : nestings ((j, iy <> jy) : (k, jy) : js)
+    After i j -> (i, iy) : nestings ((j, jy) : js)
   x -> x
