diff --git a/ChangeLog b/ChangeLog
index 6ad18d97922849751e979a95c5bdc6f7a3c7959c..f7eb7ff3d6a217b032a9ae8ff756614e337ee15d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,10 @@
         * using CGRIBEX library version 2.3.1
 	* Version 2.5.0 released
 
+2024-11-04  Uwe Schulzweida
+
+	* reset chunktype if z and t are chunked
+
 2024-10-24  Uwe Schulzweida
 
 	* lock access to NCZARR in CDI_Threadsafe mode
diff --git a/src/stream_cdf_i.c b/src/stream_cdf_i.c
index dd32e6e2b9dcd07d1d155169ea6089e835ee98a6..29c21e99495bebe9db62e18b0934e410d521ebef 100644
--- a/src/stream_cdf_i.c
+++ b/src/stream_cdf_i.c
@@ -2075,19 +2075,21 @@ grid_set_chunktype(grid_t *grid, ncvar_t *ncvar)
   if (ncvar->isChunked)
     {
       int ndims = ncvar->ndims;
+      size_t chunkSizeAllDims = 1;
+      for (int i = 0; i < ndims; ++i) chunkSizeAllDims *= ncvar->chunks[i];
 
+      size_t dimN = ncvar->chunks[ndims - 1];
       if (grid->type == GRID_UNSTRUCTURED)
         {
-          size_t chunkSize = ncvar->chunks[ndims - 1];
+          size_t chunkSize = (chunkSizeAllDims == dimN) ? dimN : 0;
           ncvar->chunkType = (chunkSize == grid->size) ? CDI_CHUNK_GRID : CDI_CHUNK_AUTO;
           if (ncvar->chunkType == CDI_CHUNK_AUTO && chunkSize > 1) ncvar->chunkSize = (int) chunkSize;
         }
       else
         {
-          if (grid->x.size > 1 && grid->y.size > 1 && ndims > 1 && grid->x.size == ncvar->chunks[ndims - 1]
-              && grid->y.size == ncvar->chunks[ndims - 2])
+          if (grid->x.size > 1 && grid->y.size > 1 && ndims > 1 && grid->x.size == dimN && grid->y.size == ncvar->chunks[ndims - 2])
             ncvar->chunkType = CDI_CHUNK_GRID;
-          else if (grid->x.size > 1 && grid->x.size == ncvar->chunks[ndims - 1])
+          else if (grid->x.size > 1 && grid->x.size == dimN && chunkSizeAllDims == dimN)
             ncvar->chunkType = CDI_CHUNK_LINES;
           else
             ncvar->chunkType = CDI_CHUNK_AUTO;