diff --git a/src/zaxis.c b/src/zaxis.c
index d3bc4ec309d0c53b72840c2aca8f43d30ba1a44d..5f0a190e8601299854241ff3e10f9f88a92b040a 100644
--- a/src/zaxis.c
+++ b/src/zaxis.c
@@ -184,18 +184,23 @@ zaxisCreate_(int zaxistype, int size, int id)
   zaxisptr->type = zaxistype;
   zaxisptr->size = size;
 
-  if (zaxistype >= CDI_NumZaxistype || zaxistype < 0)
-    Error("Internal problem! zaxistype=%d out of range (min=0/max=%d)!", zaxistype, CDI_NumZaxistype - 1);
-
   int zaxisID = zaxisptr->self;
-  cdiDefKeyString(zaxisID, CDI_GLOBAL, CDI_KEY_NAME, ZaxistypeEntry[zaxistype].name);
-  if (zaxistype != ZAXIS_GENERIC) zaxisDefLongname(zaxisID, ZaxistypeEntry[zaxistype].longname);
-  cdiDefKeyString(zaxisID, CDI_GLOBAL, CDI_KEY_UNITS, ZaxistypeEntry[zaxistype].units);
 
-  const char *stdname = ZaxistypeEntry[zaxistype].stdname;
-  if (*stdname) cdiDefVarKeyBytes(&zaxisptr->keys, CDI_KEY_STDNAME, (const unsigned char *) stdname, (int) strlen(stdname) + 1);
+  if (zaxistype >= 0 && zaxistype < CDI_NumZaxistype)
+    {
+      cdiDefKeyString(zaxisID, CDI_GLOBAL, CDI_KEY_NAME, ZaxistypeEntry[zaxistype].name);
+      if (zaxistype != ZAXIS_GENERIC) zaxisDefLongname(zaxisID, ZaxistypeEntry[zaxistype].longname);
+      cdiDefKeyString(zaxisID, CDI_GLOBAL, CDI_KEY_UNITS, ZaxistypeEntry[zaxistype].units);
+
+      const char *stdname = ZaxistypeEntry[zaxistype].stdname;
+      if (*stdname) cdiDefVarKeyBytes(&zaxisptr->keys, CDI_KEY_STDNAME, (const unsigned char *) stdname, (int) strlen(stdname) + 1);
 
-  zaxisptr->positive = ZaxistypeEntry[zaxistype].positive;
+      zaxisptr->positive = ZaxistypeEntry[zaxistype].positive;
+    }
+  else
+    {
+      Error("Internal problem! zaxistype=%d out of range (min=0/max=%d)!", zaxistype, CDI_NumZaxistype - 1);
+    }
 
   return zaxisID;
 }