diff --git a/GenericIO.cxx b/GenericIO.cxx
index bc6ccec877c72a2ef92443a8c977b7d21f3fa24c..83702c3c2cedbfbd547be1b29de5fc67f0b14fab 100644
--- a/GenericIO.cxx
+++ b/GenericIO.cxx
@@ -608,10 +608,11 @@ nosz:
   }
 #endif
 
-        LocalCData[i].resize(LocalCData[i].size() + OrigDataSize);
+        size_t RealOrigDataSize = NElems*Vars[i].Size;
+        LocalCData[i].resize(LocalCData[i].size() + RealOrigDataSize);
         if (blosc_compress(9, 1, OrigUnitSize, OrigDataSize, OrigData,
                            &LocalCData[i][0] + sizeof(CompressHeader<IsBigEndian>),
-                           OrigDataSize) <= 0) {
+                           RealOrigDataSize) <= 0) {
           if (FreeOrigData)
             free(OrigData);