diff --git a/Data/Streaming/Zlib.hs b/Data/Streaming/Zlib.hs
--- a/Data/Streaming/Zlib.hs
+++ b/Data/Streaming/Zlib.hs
@@ -33,6 +33,7 @@
     , feedDeflate
     , finishDeflate
     , flushDeflate
+    , fullFlushDeflate
       -- * Data types
     , WindowBits (..)
     , defaultWindowBits
@@ -281,3 +282,17 @@
 flushDeflate :: Deflate -> Popper
 flushDeflate (Deflate (fzstr, fbuff)) =
     drain fbuff fzstr Nothing c_call_deflate_flush True
+
+-- | Full flush the deflation buffer. Useful for interactive
+-- applications where previously streamed data may not be
+-- available. Using `fullFlushDeflate` too often can seriously degrade
+-- compression. Internally this passes Z_FULL_FLUSH to the zlib
+-- library.
+--
+-- Like 'flushDeflate', 'fullFlushDeflate' does not signal end of input,
+-- meaning you can feed more uncompressed data afterward.
+--
+-- Since 0.1.5
+fullFlushDeflate :: Deflate -> Popper
+fullFlushDeflate (Deflate (fzstr, fbuff)) =
+    drain fbuff fzstr Nothing c_call_deflate_full_flush True
diff --git a/Data/Streaming/Zlib/Lowlevel.hs b/Data/Streaming/Zlib/Lowlevel.hs
--- a/Data/Streaming/Zlib/Lowlevel.hs
+++ b/Data/Streaming/Zlib/Lowlevel.hs
@@ -18,6 +18,7 @@
     , c_call_deflate_noflush
     , c_call_deflate_finish
     , c_call_deflate_flush
+    , c_call_deflate_full_flush
     , c_call_deflate_set_dictionary
     , c_call_inflate_set_dictionary
     ) where
@@ -88,6 +89,9 @@
 
 foreign import ccall unsafe "streaming_commons_call_deflate_flush"
     c_call_deflate_flush :: ZStream' -> IO CInt
+
+foreign import ccall unsafe "streaming_commons_call_deflate_full_flush"
+    c_call_deflate_full_flush :: ZStream' -> IO CInt
 
 foreign import ccall unsafe "streaming_commons_deflate_set_dictionary"
     c_call_deflate_set_dictionary :: ZStream' -> Ptr CChar -> CUInt -> IO ()
diff --git a/cbits/zlib-helper.c b/cbits/zlib-helper.c
--- a/cbits/zlib-helper.c
+++ b/cbits/zlib-helper.c
@@ -91,6 +91,11 @@
 	return deflate(stream, Z_SYNC_FLUSH);
 }
 
+int streaming_commons_call_deflate_full_flush (z_stream *stream)
+{
+	return deflate(stream, Z_FULL_FLUSH);
+}
+
 int streaming_commons_call_deflate_finish (z_stream *stream)
 {
 	return deflate(stream, Z_FINISH);
diff --git a/streaming-commons.cabal b/streaming-commons.cabal
--- a/streaming-commons.cabal
+++ b/streaming-commons.cabal
@@ -1,5 +1,5 @@
 name:                streaming-commons
-version:             0.1.4.2
+version:             0.1.5
 synopsis:            Common lower-level functions needed by various streaming data libraries
 description:         Provides low-dependency functionality commonly needed by various streaming data libraries, such as conduit and pipes.
 homepage:            https://github.com/fpco/streaming-commons
