diff --git a/src/zaxis.c b/src/zaxis.c
index 3fa35807587703a4eb17e889ec79e2df34686af2..a1fbc386256d916953bc196cc463f6b0bfcec605 100644
--- a/src/zaxis.c
+++ b/src/zaxis.c
@@ -760,7 +760,7 @@ void zaxisDefLevels(int zaxisID, const double *levels)
 
   if ( levels )
     {
-      if ( zaxisptr->vals == NULL )
+      if ( zaxisptr->vals == NULL && size != (size_t) 0 )
         zaxisptr->vals = (double*) Malloc(size*sizeof(double));
 
       double *vals = zaxisptr->vals;
@@ -792,7 +792,7 @@ void zaxisDefLevel(int zaxisID, int levelID, double level)
   zaxis_t *zaxisptr = zaxis_to_pointer(zaxisID);
   int size = zaxisptr->size;
 
-  if ( zaxisptr->vals == NULL )
+  if ( zaxisptr->vals == NULL && size != 0 )
     zaxisptr->vals = (double*) Malloc((size_t)size*sizeof(double));
 
   if ( levelID >= 0 && levelID < size )