diff --git a/lzma-conduit.cabal b/lzma-conduit.cabal
--- a/lzma-conduit.cabal
+++ b/lzma-conduit.cabal
@@ -1,5 +1,5 @@
 name:                lzma-conduit
-version:             0.1.2.1
+version:             0.1.2.2
 synopsis:            Conduit interface for lzma/xz compression.
 description:
   High level bindings to xz-utils.
diff --git a/src/Data/Conduit/Lzma.hs b/src/Data/Conduit/Lzma.hs
--- a/src/Data/Conduit/Lzma.hs
+++ b/src/Data/Conduit/Lzma.hs
@@ -163,11 +163,10 @@
   -- the normal case, we have some results..
   | availOut < bufferSize = do
       x <- getChunk streamPtr availOut
-      if availIn == 0 -- no more input, stop processing
+      if availIn == 0 && action /= c'LZMA_FINISH -- no more input, stop processing
         then return [x]
         else do
           -- run lzma_code forward just far enough to read all the input buffer
-          -- xs <- unsafeInterleaveIO $ buildChunks streamPtr action status
           xs <- buildChunks streamPtr action status
           return $! x:xs
 
