diff --git a/Data/FingerTree.hs b/Data/FingerTree.hs
--- a/Data/FingerTree.hs
+++ b/Data/FingerTree.hs
@@ -4,9 +4,11 @@
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE UndecidableInstances #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE Safe #-}
 #endif
+#if __GLASGOW_HASKELL__ >= 706
+{-# LANGUAGE DeriveGeneric #-}
+#endif
 #if __GLASGOW_HASKELL__ >= 710
 {-# LANGUAGE AutoDeriveTypeable #-}
 #endif
@@ -97,7 +99,7 @@
     = EmptyL        -- ^ empty sequence
     | a :< s a      -- ^ leftmost element and the rest of the sequence
     deriving (Eq, Ord, Show, Read
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -108,7 +110,7 @@
     | s a :> a      -- ^ the sequence minus the rightmost element,
                     -- and the rightmost element
     deriving (Eq, Ord, Show, Read
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -141,7 +143,7 @@
     | Three a a a
     | Four a a a a
     deriving (Show
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -169,7 +171,7 @@
 
 data Node v a = Node2 !v a a | Node3 !v a a a
     deriving (Show
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -209,11 +211,11 @@
     | Deep !v !(Digit a) (FingerTree v (Node v a)) !(Digit a)
 #if TESTING
     deriving (Show
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
-#elif __GLASGOW_HASKELL__ >= 702
+#elif __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 
@@ -897,7 +899,7 @@
         -- at the left end and 'False' at the right end.  This will not
         -- occur if the predicate in monotonic on the tree.
     deriving (Eq, Ord, Show
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
diff --git a/Data/IntervalMap/FingerTree.hs b/Data/IntervalMap/FingerTree.hs
--- a/Data/IntervalMap/FingerTree.hs
+++ b/Data/IntervalMap/FingerTree.hs
@@ -1,9 +1,11 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE Safe #-}
 #endif
+#if __GLASGOW_HASKELL__ >= 706
+{-# LANGUAGE DeriveGeneric #-}
+#endif
 #if __GLASGOW_HASKELL__ >= 710
 {-# LANGUAGE AutoDeriveTypeable #-}
 #endif
@@ -73,7 +75,7 @@
 -- to the upper bound.
 data Interval v = Interval v v -- ^ Lower and upper bounds of the interval.
     deriving (Eq, Ord, Show, Read
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -92,7 +94,7 @@
 
 data Node v a = Node (Interval v) a
     deriving (Eq, Ord, Show, Read
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
         , Generic
 #endif
         )
@@ -108,7 +110,7 @@
 
 -- rightmost interval (including largest lower bound) and largest upper bound.
 data IntInterval v = NoInterval | IntInterval (Interval v) v
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 
@@ -135,7 +137,7 @@
 -- | Map of closed intervals, possibly with duplicates.
 newtype IntervalMap v a =
     IntervalMap (FingerTree (IntInterval v) (Node v a))
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 -- ordered lexicographically by interval
diff --git a/Data/PriorityQueue/FingerTree.hs b/Data/PriorityQueue/FingerTree.hs
--- a/Data/PriorityQueue/FingerTree.hs
+++ b/Data/PriorityQueue/FingerTree.hs
@@ -1,9 +1,11 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 #if __GLASGOW_HASKELL__ >= 702
-{-# LANGUAGE DeriveGeneric #-}
 {-# LANGUAGE Safe #-}
 #endif
+#if __GLASGOW_HASKELL__ >= 706
+{-# LANGUAGE DeriveGeneric #-}
+#endif
 #if __GLASGOW_HASKELL__ >= 710
 {-# LANGUAGE AutoDeriveTypeable #-}
 #endif
@@ -75,7 +77,7 @@
 import Data.List (unfoldr)
 
 data Entry k v = Entry k v
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 
@@ -86,7 +88,7 @@
     foldMap f (Entry _ v) = f v
 
 data Prio k v = NoPrio | Prio k v
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 
@@ -113,7 +115,7 @@
 
 -- | Priority queues.
 newtype PQueue k v = PQueue (FingerTree (Prio k v) (Entry k v))
-#if __GLASGOW_HASKELL__ >= 702
+#if __GLASGOW_HASKELL__ >= 706
     deriving (Generic)
 #endif
 
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,5 +1,8 @@
 -*-change-log-*-
 
+0.1.4.1 Ross Paterson <R.Paterson@city.ac.uk> Mar 2018
+	* Disabled Generic instances for GHC <= 7.6
+
 0.1.4.0 Ross Paterson <R.Paterson@city.ac.uk> Mar 2018
 	* Added Generic instances
 
diff --git a/fingertree.cabal b/fingertree.cabal
--- a/fingertree.cabal
+++ b/fingertree.cabal
@@ -1,5 +1,5 @@
 Name:           fingertree
-Version:        0.1.4.0
+Version:        0.1.4.1
 Cabal-Version:  >= 1.18
 Copyright:      (c) 2006 Ross Paterson, Ralf Hinze
 License:        BSD3
