diff --git a/common/rdr/ZlibOutStream.cxx b/common/rdr/ZlibOutStream.cxx
index c86a5a5..f04536f 100644
--- a/common/rdr/ZlibOutStream.cxx
+++ b/common/rdr/ZlibOutStream.cxx
@@ -29,7 +29,8 @@
 
 ZlibOutStream::ZlibOutStream(OutStream* os, int bufSize_, int compressLevel)
   : underlying(os), compressionLevel(compressLevel), newLevel(compressLevel),
-    bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0)
+    bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0),
+    newBehavior(false)
 {
   zs = new z_stream;
   zs->zalloc    = Z_NULL;
@@ -41,6 +42,8 @@
   }
   ptr = start = new U8[bufSize];
   end = start + bufSize;
+  const char *version = zlibVersion();
+  if (strcmp(version, "1.2.3") > 0) newBehavior = true;
 }
 
 ZlibOutStream::~ZlibOutStream()
@@ -79,6 +82,9 @@
 
 //    fprintf(stderr,"zos flush: avail_in %d\n",zs->avail_in);
 
+  if (!underlying)
+    throw Exception("ZlibOutStream: underlying OutStream has not been set");
+
   while (zs->avail_in != 0) {
 
     do {
@@ -112,6 +118,9 @@
   if (itemSize > bufSize)
     throw Exception("ZlibOutStream overrun: max itemSize exceeded");
 
+  if (!underlying)
+    throw Exception("ZlibOutStream: underlying OutStream has not been set");
+
   while (end - ptr < itemSize) {
     zs->next_in = start;
     zs->avail_in = ptr - start;
@@ -124,11 +133,11 @@
 //        fprintf(stderr,"zos overrun: calling deflate, avail_in %d, avail_out %d\n",
 //                zs->avail_in,zs->avail_out);
 
-     checkCompressionLevel();
-     if (zs->avail_in != 0) {
-       int rc = deflate(zs, 0);
-       if (rc != Z_OK) throw Exception("ZlibOutStream: deflate failed");
-     }
+      checkCompressionLevel();
+      if (zs->avail_in != 0) {
+        int rc = deflate(zs, 0);
+        if (rc != Z_OK) throw Exception("ZlibOutStream: deflate failed");
+      }
 
 //        fprintf(stderr,"zos overrun: after deflate: %d bytes\n",
 //                zs->next_out-underlying->getptr());
@@ -160,6 +169,17 @@
 void ZlibOutStream::checkCompressionLevel()
 {
   if (newLevel != compressionLevel) {
+
+    // This is a horrible hack, but after many hours of trying, I couldn't find
+    // a better way to make this class work properly with both Zlib 1.2.3 and
+    // 1.2.5.  1.2.3 does a Z_PARTIAL_FLUSH in the body of deflateParams() if
+    // the compression level has changed, and 1.2.5 does a Z_BLOCK flush.
+
+    if (newBehavior) {
+      int rc = deflate(zs, Z_SYNC_FLUSH);
+      if (rc != Z_OK) throw Exception("ZlibOutStream: deflate failed");
+    }
+
     if (deflateParams (zs, newLevel, Z_DEFAULT_STRATEGY) != Z_OK) {
       throw Exception("ZlibOutStream: deflateParams failed");
     }
