diff --git a/src/cdf_write.c b/src/cdf_write.c
index b0e37a2a6a439dc41c8846a978a5b69c9012e1bf..da8e0b6624ae8e4e8661ba469e2102d353598706 100644
--- a/src/cdf_write.c
+++ b/src/cdf_write.c
@@ -862,9 +862,10 @@ cdfDefVar(stream_t *streamptr, int varID)
   const int zaxisindex = vlistZaxisIndex(vlistID, zaxisID);
   const int zid = streamptr->zaxisID[zaxisindex];
 
-  int dimorder[3];  // ZYX and ZXY
+  int dimorder[3];  // ZYX/321 and ZXY/312
   vlistInqVarDimorder(vlistID, varID, &dimorder);
-  const bool useChunks = (dimorder[0] == 3) ? (gridsize >= 32) : false;
+  const bool useGridsize = (dimorder[0] == 3) || (dimorder[1] == 3 && dimorder[2] == 1 && gridsize == gridInqXsize(gridID));
+  const bool useChunks = useGridsize ? (gridsize >= 32) : false;
 
   if (((dimorder[0] > 0) + (dimorder[1] > 0) + (dimorder[2] > 0))
       < ((xid != CDI_UNDEFID) + (yid != CDI_UNDEFID) + (zid != CDI_UNDEFID)))