diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,4 @@
+0.3.1 (4 March, 2016)
+=====================
+
+- bug fix: differentiation of monomials
diff --git a/MathObj/Monomial.hs b/MathObj/Monomial.hs
--- a/MathObj/Monomial.hs
+++ b/MathObj/Monomial.hs
@@ -17,17 +17,17 @@
 
     ) where
 
-import qualified Algebra.Additive as Additive
-import qualified Algebra.Ring as Ring
-import qualified Algebra.ZeroTestable as ZeroTestable
+import qualified Algebra.Additive     as Additive
 import qualified Algebra.Differential as Differential
-import qualified Algebra.Field as Field
+import qualified Algebra.Field        as Field
+import qualified Algebra.Ring         as Ring
+import qualified Algebra.ZeroTestable as ZeroTestable
 
-import qualified Data.Map as M
-import Data.Ord (comparing)
-import Data.List (sort, intercalate)
+import           Data.List            (intercalate, sort)
+import qualified Data.Map             as M
+import           Data.Ord             (comparing)
 
-import NumericPrelude
+import           NumericPrelude
 
 -- | A monomial is a map from variable indices to integer powers,
 --   paired with a (polymorphic) coefficient.  Note that negative
@@ -134,9 +134,11 @@
 -- Partial differentiation with respect to x1.
 instance (ZeroTestable.C a, Ring.C a) => Differential.C (T a) where
   differentiate (Cons a m)
-    | Just 1 <- M.lookup 1 m = Cons a M.empty
-    | Just p <- M.lookup 1 m = Cons (a*fromInteger p) (M.adjust (subtract 1) 1 m)
+    | Just p <- M.lookup 1 m = Cons (a*fromInteger p) (M.update powerPred 1 m)
     | otherwise              = Cons zero M.empty
+    where
+      powerPred 1 = Nothing
+      powerPred p = Just (p-1)
 
 instance (ZeroTestable.C a, Field.C a, Eq a) => Field.C (T a) where
   recip (Cons a pows) = if isZero a
diff --git a/np-extras.cabal b/np-extras.cabal
--- a/np-extras.cabal
+++ b/np-extras.cabal
@@ -1,5 +1,5 @@
 name:           np-extras
-version:        0.3.0.1
+version:        0.3.1
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
@@ -12,6 +12,7 @@
 synopsis:       NumericPrelude extras
 description:    Various extras to extend the NumericPrelude, including
                 multivariate polynomials and factored rationals.
+extra-source-files: CHANGES.md
 source-repository head
   type:     darcs
   location: http://hub.darcs.net/byorgey/np-extras
