diff --git a/Data/IntervalMap/Generic/Base.hs b/Data/IntervalMap/Generic/Base.hs
--- a/Data/IntervalMap/Generic/Base.hs
+++ b/Data/IntervalMap/Generic/Base.hs
@@ -255,6 +255,8 @@
 
 instance (Interval i k, Ord i) => Sem.Semigroup (IntervalMap i v) where
   (<>) = union
+  sconcat = unions . Foldable.toList
+  stimes = Sem.stimesIdempotentMonoid
 
 instance (Interval i k, Ord i) => Monoid (IntervalMap i v) where
     mempty  = empty
diff --git a/Data/IntervalSet.hs b/Data/IntervalSet.hs
--- a/Data/IntervalSet.hs
+++ b/Data/IntervalSet.hs
@@ -173,6 +173,8 @@
 
 instance (Interval i k, Ord i) => Sem.Semigroup (IntervalSet i) where
   (<>) = union
+  sconcat = unions . Foldable.toList
+  stimes = Sem.stimesIdempotentMonoid
 
 instance (Interval i k, Ord i) => Monoid (IntervalSet i) where
     mempty  = empty
diff --git a/IntervalMap.cabal b/IntervalMap.cabal
--- a/IntervalMap.cabal
+++ b/IntervalMap.cabal
@@ -1,5 +1,5 @@
 Name:                IntervalMap
-Version:             0.6.1.0
+Version:             0.6.1.1
 Stability:           experimental
 Synopsis:            Containers for intervals, with efficient search.
 Homepage:            http://www.chr-breitkopf.de/comp/IntervalMap
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,4 @@
+0.6.1.1  Improve Semigroup instances.
 0.6.1.0  Add safe versions of find... functions.
 
 0.6.0.0  Support ghc 8.4, desupport ghc 7.x.
