diff --git a/seqloc-datafiles.cabal b/seqloc-datafiles.cabal
--- a/seqloc-datafiles.cabal
+++ b/seqloc-datafiles.cabal
@@ -1,5 +1,5 @@
 Name:                seqloc-datafiles
-Version:             0.2.1.1
+Version:             0.2.2
 Cabal-Version:       >= 1.4
 Synopsis:            Read and write BED and GTF format genome annotations
 Description:         Read and write BED and GTF format genome annotations
@@ -20,7 +20,7 @@
   Other-modules:       Bio.SeqLoc.ZeptoUtils
   Build-depends:       base >= 4.2 && < 5, bytestring,
                        attoparsec >= 0.8.5, hashable, unordered-containers,
-                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore
+                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore >= 0.2
   Hs-Source-Dirs:      src
   Ghc-options:         -Wall
 
@@ -29,7 +29,7 @@
   Other-modules:       Bio.SeqLoc.GTF, Bio.SeqLoc.Bed, Bio.SeqLoc.ZeptoUtils
   Build-depends:       base >= 4.2 && < 5, bytestring,
                        attoparsec >= 0.8.5, hashable, unordered-containers,
-                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore, transformers, monads-tf
+                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore >= 0.2, transformers, monads-tf 
   Hs-Source-Dirs:      src
   Ghc-options:         -Wall -rtsopts
   C-Sources:           src/rtsopts.c
@@ -41,7 +41,7 @@
   Other-modules:       Bio.SeqLoc.GTF, Bio.SeqLoc.TranscriptTable, Bio.SeqLoc.ZeptoUtils
   Build-depends:       base >= 4.2 && < 5, bytestring,
                        attoparsec >= 0.8.5, hashable, unordered-containers,
-                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore,
+                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore >= 0.2,
                        QuickCheck, random
   Hs-Source-Dirs:      src, test
   Ghc-options:         -Wall -rtsopts
@@ -54,7 +54,7 @@
   Other-modules:       Bio.SeqLoc.Bed, Bio.SeqLoc.TranscriptTable, Bio.SeqLoc.ZeptoUtils
   Build-depends:       base >= 4.2 && < 5, bytestring,
                        attoparsec >= 0.8.5, hashable, unordered-containers,
-                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore,
+                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore >= 0.2,
                        QuickCheck, random
   Hs-Source-Dirs:      src, test
   Ghc-options:         -Wall
@@ -66,7 +66,7 @@
   Other-modules:       Bio.SeqLoc.GTF, Bio.SeqLoc.TranscriptTable, Bio.SeqLoc.ZeptoUtils
   Build-depends:       base >= 4.2 && < 5, bytestring,
                        attoparsec >= 0.8.5, hashable, unordered-containers,
-                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore,
+                       iteratee >= 0.8.1, seqloc >= 0.3.1, biocore >= 0.2,
                        QuickCheck, random
   Hs-Source-Dirs:      src, test
   Ghc-options:         -Wall -rtsopts
diff --git a/src/Bio/SeqLoc/Bed.hs b/src/Bio/SeqLoc/Bed.hs
--- a/src/Bio/SeqLoc/Bed.hs
+++ b/src/Bio/SeqLoc/Bed.hs
@@ -126,8 +126,8 @@
              fail $ "Bio.SeqLoc.Bed: bad sploc:" ++ 
              (BS.unpack . BS.unwords $ [ repr loc, repr chromStart, repr chromEnd ])
            cdsloc <- case liftM2 (,) thickStart thickEnd of
-             Just (start, end) -> liftM Just $! bedCdsLoc loc start end
-             Nothing -> return Nothing
+             Just (start, end) | end > start -> liftM Just $! bedCdsLoc loc start end
+             _ -> return Nothing
            let n = toSeqLabel $ BS.copy name
                c = toSeqLabel $ BS.copy chrom
            return $! Transcript n n (OnSeq c loc) cdsloc
