diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog for the [`clash-lib`](http://hackage.haskell.org/package/clash-lib) package
 
+## 0.6.2 *October 21st 2015*
+* Fixes bugs:
+  * DEC: Subject and alternatives are not disjoint [#88](https://github.com/clash-lang/clash-compiler/issues/88)
+
 ## 0.6.1 *October 16th 2015*
 * New features:
   * Support for `clash-prelude` 0.10.1
diff --git a/clash-lib.cabal b/clash-lib.cabal
--- a/clash-lib.cabal
+++ b/clash-lib.cabal
@@ -1,5 +1,5 @@
 Name:                 clash-lib
-Version:              0.6.1
+Version:              0.6.2
 Synopsis:             CAES Language for Synchronous Hardware - As a Library
 Description:
   CλaSH (pronounced ‘clash’) is a functional hardware description language that
diff --git a/src/CLaSH/Normalize/DEC.hs b/src/CLaSH/Normalize/DEC.hs
--- a/src/CLaSH/Normalize/DEC.hs
+++ b/src/CLaSH/Normalize/DEC.hs
@@ -117,8 +117,9 @@
                   (Term,[(Term,CaseTree [(Either Term Type)])])
 collectGlobals inScope substitution seen (Case scrut ty alts) = do
   (scrut',collected)  <- collectGlobals     inScope substitution seen scrut
-  (alts' ,collected') <- collectGlobalsAlts inScope substitution seen scrut'
-                                            alts
+  (alts' ,collected') <- collectGlobalsAlts inScope substitution
+                                            (map fst collected ++ seen)
+                                            scrut' alts
   return (Case scrut' ty alts',collected ++ collected')
 
 collectGlobals inScope substitution seen e@(collectArgs -> (fun, args@(_:_)))
