diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 3dffb07eff212f9f78458e23649a4826333eb171..c8d8e75e953abbbd5dcdafd3b00614c65581c8c3 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -14847,7 +14847,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfFloat
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(double));
-    for(int i = 0; i < out_vector->size(); i++) {
+    for(unsigned int i = 0; i < out_vector->size(); i++) {
       val_ = out_vector->at(i);
       List_Add(out, &val_);
     }
@@ -14964,7 +14964,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfString
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(char *));
-    for(int i = 0; i < out_vector->size(); i++) {
+    for(unsigned int i = 0; i < out_vector->size(); i++) {
       val_ = strsave((char*)out_vector->at(i).c_str());
       List_Add(out, &val_);
     }
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index f305b569d5c2e212539013762a4241535faa0d53..1dd78c20c2fb64736834301c3ce78b4ec32539e0 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -7022,7 +7022,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfFloat
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(double));
-    for(int i = 0; i < out_vector->size(); i++) {
+    for(unsigned int i = 0; i < out_vector->size(); i++) {
       val_ = out_vector->at(i);
       List_Add(out, &val_);
     }
@@ -7139,7 +7139,7 @@ List_T * treat_Struct_FullName_dot_tSTRING_ListOfString
           (struct_namespace, struct_name, key_member, out_vector)) {
   case 0:
     out = List_Create(out_vector->size(), 1, sizeof(char *));
-    for(int i = 0; i < out_vector->size(); i++) {
+    for(unsigned int i = 0; i < out_vector->size(); i++) {
       val_ = strsave((char*)out_vector->at(i).c_str());
       List_Add(out, &val_);
     }
diff --git a/Parser/Parser.h b/Parser/Parser.h
index ba7f08ee55945e18b9406e5808efcc5141f77619..13b55cf355507c97376e6f3a4bb67c88f7881e07 100644
--- a/Parser/Parser.h
+++ b/Parser/Parser.h
@@ -60,7 +60,7 @@ public:
     std::map<std::string, std::vector<double> >::const_iterator
       it = _fopt.find(key_member);
     if (it != _fopt.end()) {
-      if (index < it->second.size()) {
+      if (index < (int)it->second.size()) {
         out = it->second[index]; return 0;
       }
       else {
@@ -77,7 +77,7 @@ public:
     std::map<std::string, std::vector<std::string> >::const_iterator
       it = _copt.find(key_member);
     if (it != _copt.end()) {
-      if (index < it->second.size()) {
+      if (index < (int)it->second.size()) {
         out = &it->second[index]; return 0;
       }
       else {
@@ -150,7 +150,7 @@ public:
       str += it_attrib->first + " ";
       char tmp[32];
       if (it_attrib->second.size() > 1) str += "{ ";
-      for (int i = 0; i < it_attrib->second.size(); i++) {
+      for (unsigned int i = 0; i < it_attrib->second.size(); i++) {
         if (i) str += ", ";
         sprintf(tmp, "%g", it_attrib->second[i]); str += tmp;
       }
@@ -163,7 +163,7 @@ public:
       if (flag_comma) str += ", ";
       str += it_attrib->first + " ";
       if (it_attrib->second.size() > 1) str += "Str[{ ";
-      for (int i = 0; i < it_attrib->second.size(); i++) {
+      for (unsigned int i = 0; i < it_attrib->second.size(); i++) {
         if (i) str += ", ";
         str += "\"" + it_attrib->second[i] + "\"";
       }