diff --git a/med-module.cabal b/med-module.cabal
--- a/med-module.cabal
+++ b/med-module.cabal
@@ -1,5 +1,5 @@
 Name:                med-module
-Version:             0.1.2
+Version:             0.1.2.1
 Synopsis:            Parse song module files from Amiga MED and OctaMED
 Description:
   MED (Music EDitor) and its successor OctaMED
@@ -29,7 +29,7 @@
 Cabal-Version:       >=1.10
 
 Source-Repository this
-  Tag:         0.1.2
+  Tag:         0.1.2.1
   Type:        darcs
   Location:    http://hub.darcs.net/thielema/med-module
 
diff --git a/src/Sound/MED/Raw/HybridInstr.hs b/src/Sound/MED/Raw/HybridInstr.hs
--- a/src/Sound/MED/Raw/HybridInstr.hs
+++ b/src/Sound/MED/Raw/HybridInstr.hs
@@ -6,6 +6,9 @@
 import Sound.MED.Basic.Amiga
 import Sound.MED.Basic.Utility
 
+import Control.Monad (liftM)
+
+
 data HybridInstr = HybridInstr
   { defaultdecay :: UBYTE
   , reserved     :: [ UBYTE ]
@@ -27,6 +30,8 @@
 {-# SPECIALISE peek :: PTR -> ByteStringReader HybridInstr #-}
 peek :: (Reader m) => PTR -> m HybridInstr
 peek p = do
+  let nonEmpty (x:xs) = (x,xs)
+      nonEmpty [] = error "list must be non-empty"
   defaultdecay' <- peekUBYTE (p+6)
   reserved'     <- mapM peekUBYTE $ pointerRange (p+7) 1 3
   rep'          <- peekUWORD (p+10)
@@ -38,7 +43,8 @@
   wforms'       <- peekUWORD (p+20)
   voltbl'       <- mapM peekUBYTE $ pointerRange (p+22) 1 128
   wftbl'        <- mapM peekUBYTE $ pointerRange (p+150) 150 128
-  wf0':wf''     <- mapM peekPTR   $ pointerRange (p+278) 4 64
+  (wf0',wf'')   <- liftM nonEmpty $
+                   mapM peekPTR   $ pointerRange (p+278) 4 64
   wf'           <- mapM (SynthWF.peek . (p+) $?) wf''
   return $ HybridInstr
     defaultdecay' reserved' rep' replen' voltbllen' wftbllen'
