diff --git a/src/namespace.c b/src/namespace.c
index 0c234526178b613853e8b3aa8c4c851fa6af643a..c850c5259bb94487a250d89975175d3c058c17ab 100644
--- a/src/namespace.c
+++ b/src/namespace.c
@@ -21,7 +21,7 @@
 #include "cdi_int.h"
 #include "stream_cdf.h"
 
-static int nNamespaces = 1;
+static unsigned nNamespaces = 1;
 static int activeNamespace = 0;
 
 #ifdef HAVE_LIBNETCDF
@@ -72,7 +72,7 @@ static struct Namespace
 
 static struct Namespace *namespaces = &initialNamespace;
 
-static int namespacesSize = 1;
+static unsigned namespacesSize = 1;
 
 #if  defined  (HAVE_LIBPTHREAD)
 #  include <pthread.h>
@@ -151,10 +151,10 @@ namespaceNew()
   if (namespacesSize > nNamespaces)
     {
       /* namespace is already available and only needs reinitialization */
-      for (int i = 0; i < namespacesSize; ++i)
+      for (unsigned i = 0; i < namespacesSize; ++i)
         if (namespaces[i].resStage == STAGE_UNUSED)
           {
-            newNamespaceID = i;
+            newNamespaceID = (int)i;
             break;
           }
     }
@@ -171,7 +171,7 @@ namespaceNew()
   else if (namespacesSize < NUM_NAMESPACES)
     {
       /* make room for additional namespace */
-      newNamespaceID = namespacesSize;
+      newNamespaceID = (int)namespacesSize;
       namespaces
         = (struct Namespace *)xrealloc(namespaces, ((size_t)namespacesSize + 1) * sizeof (namespaces[0]));
       ++namespacesSize;
@@ -203,7 +203,8 @@ namespaceDelete(int namespaceID)
 {
   NAMESPACE_INIT();
   NAMESPACE_LOCK();
-  xassert(namespaceID < namespacesSize && nNamespaces);
+  xassert(namespaceID >= 0 && (unsigned)namespaceID < namespacesSize
+          && nNamespaces);
   reshListDestruct(namespaceID);
   namespaces[namespaceID].resStage = STAGE_UNUSED;
   --nNamespaces;
@@ -212,13 +213,13 @@ namespaceDelete(int namespaceID)
 
 int namespaceGetNumber ()
 {
-  return nNamespaces;
+  return (int)nNamespaces;
 }
 
 
 void namespaceSetActive ( int nId )
 {
-  xassert(nId < namespacesSize && nId >= 0
+  xassert((unsigned)nId < namespacesSize
           && namespaces[nId].resStage != STAGE_UNUSED);
   activeNamespace = nId;
 }
@@ -294,9 +295,9 @@ void cdiReset(void)
 {
   NAMESPACE_INIT();
   NAMESPACE_LOCK();
-  for (int namespaceID = 0; namespaceID < namespacesSize; ++namespaceID)
+  for (unsigned namespaceID = 0; namespaceID < namespacesSize; ++namespaceID)
     if (namespaces[namespaceID].resStage != STAGE_UNUSED)
-      namespaceDelete(namespaceID);
+      namespaceDelete((int)namespaceID);
   if (namespaces != &initialNamespace)
     {
       free(namespaces);