diff --git a/Geo/GModelFactory.cpp b/Geo/GModelFactory.cpp
index ac016c4fb721f2ee73f0609967f0cbd7dbc53916..7d9ac12cf233918bc5b28df826349125f2524423 100644
--- a/Geo/GModelFactory.cpp
+++ b/Geo/GModelFactory.cpp
@@ -163,14 +163,14 @@ GEdge *OCCFactory::addNURBS(GModel *gm, GVertex *start, GVertex *end,
   TColStd_Array1OfReal _weights(1, weights.size());
   TColStd_Array1OfInteger  _mult(1, mult.size());
   
-  for (int i = 0; i < knots.size(); i++) {
+  for (unsigned i = 0; i < knots.size(); i++) {
     _knots.SetValue(i+1, knots[i]);
   }
-  for (int i = 0; i < weights.size(); i++) {
+  for (unsigned i = 0; i < weights.size(); i++) {
     _weights.SetValue(i+1, weights[i]);
   }
   int totKnots = 0;
-  for (int i = 0; i < mult.size(); i++) {
+  for (unsigned i = 0; i < mult.size(); i++) {
     _mult.SetValue(i+1, mult[i]);   
     totKnots += mult[i];
   }
@@ -181,7 +181,7 @@ GEdge *OCCFactory::addNURBS(GModel *gm, GVertex *start, GVertex *end,
   
   int index = 1;
   ctrlPoints.SetValue(index++, gp_Pnt(start->x(), start->y(), start->z()));  
-  for (int i = 0; i < points.size(); i++) {
+  for (unsigned i = 0; i < points.size(); i++) {
     gp_Pnt aP(points[i][0],points[i][1],points[i][2]);
     ctrlPoints.SetValue(index++, aP);
   }
@@ -491,7 +491,7 @@ void OCCFactory::fillet(GModel *gm, std::vector<int> edges, double radius)
 {
   try{
     std::vector<TopoDS_Edge> edgesToFillet;
-    for (int i = 0; i < edges.size(); i++){
+    for (unsigned i = 0; i < edges.size(); i++){
       GEdge *ed = gm->getEdgeByTag(edges[i]);
       if (ed){
 	OCCEdge *occed = dynamic_cast<OCCEdge*>(ed);
diff --git a/Mesh/highOrderSmoother.cpp b/Mesh/highOrderSmoother.cpp
index 15ef36313e750fcd2ae1726bcc147b12f3f2190c..d045cfb5e3a1eae6d6840770932da42c12b85c51 100644
--- a/Mesh/highOrderSmoother.cpp
+++ b/Mesh/highOrderSmoother.cpp
@@ -362,7 +362,6 @@ void highOrderSmoother::optimize(GFace * gf,
   //  if (gf->geomType() != GEntity::Plane) return;
 
     std::vector<MElement*> bad;
-    double worst;
     int count = 0;
     
 
diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp
index 04780ff5feec437676a2d91896bcb1de334b07ee..c52bfc95eb55282c5c070aedd3e5fe1f168aa4b8 100644
--- a/Mesh/meshGFace.cpp
+++ b/Mesh/meshGFace.cpp
@@ -54,7 +54,7 @@ static void copyMesh (GFace *source, GFace *target)
     if (master > 0){
       vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0];
       vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0];
-      for (int i=0;i<se->mesh_vertices.size();i++){
+      for (unsigned i=0;i<se->mesh_vertices.size();i++){
 	MVertex *vs = se->mesh_vertices[i];
 	MVertex *vt = te->mesh_vertices[i];
 	vs2vt[vs] = vt;
@@ -63,7 +63,7 @@ static void copyMesh (GFace *source, GFace *target)
     else {
       vs2vt[se->getEndVertex()->mesh_vertices[0]] = te->getBeginVertex()->mesh_vertices[0];
       vs2vt[se->getBeginVertex()->mesh_vertices[0]] = te->getEndVertex()->mesh_vertices[0];
-      for (int i=0;i<se->mesh_vertices.size();i++){
+      for (unsigned i=0;i<se->mesh_vertices.size();i++){
 	MVertex *vs = se->mesh_vertices[i];
 	MVertex *vt = te->mesh_vertices[se->mesh_vertices.size()-i-1];
 	vs2vt[vs] = vt;
@@ -119,13 +119,13 @@ static void copyMesh (GFace *source, GFace *target)
     vs2vt[vs] = vt;    
   }
 
-  for (int i=0;i<source->triangles.size();i++){
+  for (unsigned i=0;i<source->triangles.size();i++){
     MVertex *v1 = vs2vt[source->triangles[i]->getVertex(0)];
     MVertex *v2 = vs2vt[source->triangles[i]->getVertex(1)];
     MVertex *v3 = vs2vt[source->triangles[i]->getVertex(2)];
     target->triangles.push_back(new MTriangle(v1,v2,v3));
   }
-  for (int i=0;i<source->quadrangles.size();i++){
+  for (unsigned i=0;i<source->quadrangles.size();i++){
     MVertex *v1 = vs2vt[source->quadrangles[i]->getVertex(0)];
     MVertex *v2 = vs2vt[source->quadrangles[i]->getVertex(1)];
     MVertex *v3 = vs2vt[source->quadrangles[i]->getVertex(2)];
diff --git a/Numeric/fullMatrix.h b/Numeric/fullMatrix.h
index 9f8e02c5f37647b2409ed24ed59dd561d5002959..8688c548aded71a94f4db25ba0f1d474a1eb6d43 100644
--- a/Numeric/fullMatrix.h
+++ b/Numeric/fullMatrix.h
@@ -260,7 +260,7 @@ class fullMatrix
             scalar alpha=1., scalar beta=1.)
 #if !defined(HAVE_BLAS)
   {
-    gemm_naive(anb,alpha,beta);
+    gemm_naive(a,b,alpha,beta);
   }
 #endif
   ;
diff --git a/Solver/dofManager.h b/Solver/dofManager.h
index b8142db1705e3cea8a71f4bf0b593051f8ad8f5f..1c64dc60afef920a94b8931950c81fd4888a1579 100644
--- a/Solver/dofManager.h
+++ b/Solver/dofManager.h
@@ -182,7 +182,7 @@ class dofManager{
       {
          dataVec tmp(val);
          val = it->second.shift;
-         for (int i=0;i<(it->second).linear.size();i++)
+         for (unsigned i=0;i<(it->second).linear.size();i++)
          {
             std::map<Dof, int>::const_iterator itu = unknown.find(((it->second).linear[i]).first);
             getDofValue(((it->second).linear[i]).first, tmp);
@@ -216,7 +216,7 @@ class dofManager{
       {
          v = it->second.shift;
          dataVec tmp(v);
-         for (int i=0;i<(it->second).linear.size();i++)
+         for (unsigned i=0;i<(it->second).linear.size();i++)
          {
             std::map<Dof, int>::const_iterator itu = unknown.find(((it->second).linear[i]).first);
             getDofValue(((it->second).linear[i]).first, tmp);
@@ -321,7 +321,7 @@ class dofManager{
         itConstraint = constraints.find(R[i]);
         if (itConstraint != constraints.end())
         {
-          for (int i=0;i<(itConstraint->second).linear.size();i++)
+          for (unsigned i=0;i<(itConstraint->second).linear.size();i++)
           {
                   std::map<Dof, int>::iterator itC = unknown.find((itConstraint->second).linear[i].first); // lin dep in unknown ?!
                   _current->addToRightHandSide(itC->second, m(i)*(itConstraint->second).linear[i].second);
@@ -444,7 +444,7 @@ class dofManager{
       if (itConstraint != constraints.end())
       {
         dataMat tmp(value);
-        for (int i=0;i<(itConstraint->second).linear.size();i++)
+        for (unsigned i=0;i<(itConstraint->second).linear.size();i++)
         {
           dofTraits<T>::gemm(tmp,(itConstraint->second).linear[i].second,value, 1, 0);
           assemble(R,(itConstraint->second).linear[i].first,tmp);
@@ -461,7 +461,7 @@ class dofManager{
       if (itConstraint != constraints.end())
       {
         dataMat tmp(value);
-        for (int i=0;i<(itConstraint->second).linear.size();i++)
+        for (unsigned i=0;i<(itConstraint->second).linear.size();i++)
         {
           dofTraits<T>::gemm(tmp,itConstraint->second.linear[i].second,value, 1, 0);
           assemble((itConstraint->second).linear[i].first,C,tmp);
diff --git a/Solver/function.cpp b/Solver/function.cpp
index e72e4b090734aa91657acb54e638302675e5e59c..74477dfca3b1a5957e9741ba50627c09e479232e 100644
--- a/Solver/function.cpp
+++ b/Solver/function.cpp
@@ -572,10 +572,10 @@ void functionReplace::get(fullMatrix<double> &v, const function *f, int iMap) {
 }
 
 void functionReplace::compute(){
-  for (int i = 0; i < _toReplace.size(); i++){
+  for (unsigned i = 0; i < _toReplace.size(); i++){
     currentCache->toReplace[i]->set();
   }
-  for (int i = 0; i < _toCompute.size(); i++) {
+  for (unsigned i = 0; i < _toCompute.size(); i++) {
     currentCache->toCompute[i]->_valid =false;
     _toCompute[i].val->setAsProxy((*currentCache->toCompute[i])());
   }
@@ -584,19 +584,19 @@ void functionReplace::compute(){
 
 functionReplaceCache::functionReplaceCache(dataCacheMap *m, functionReplace *rep, dataCacheDouble *from) {
   map = m->newChild();
-  for (int i = 0; i < m->_secondaryCaches.size(); i ++) {
+  for (unsigned i = 0; i < m->_secondaryCaches.size(); i ++) {
     map->addSecondaryCache (m->getSecondaryCache(i+1)->newChild());
   }
-  for (int i = 0; i < rep->_toReplace.size(); i++) {
+  for (unsigned i = 0; i < rep->_toReplace.size(); i++) {
     toReplace.push_back (&map->getSecondaryCache(rep->_toReplace[i].iMap)->substitute(rep->_toReplace[i].f));
   }
-  for (int i = 0; i < rep->_toCompute.size(); i++) {
+  for (unsigned i = 0; i < rep->_toCompute.size(); i++) {
     dataCacheMap *m2 = map->getSecondaryCache(rep->_toCompute[i].iMap);
     toCompute.push_back (&m2->get(rep->_toCompute[i].f, from));
   }
 }
 functionReplaceCache::~functionReplaceCache() {
-  for (int i = 0; i< map->_secondaryCaches.size(); i++) {
+  for (unsigned i = 0; i< map->_secondaryCaches.size(); i++) {
     delete map->_secondaryCaches[i];
   }
   delete map;
diff --git a/Solver/multiscaleLaplace.cpp b/Solver/multiscaleLaplace.cpp
index 93693142e189eef344407befe9e75f500e1537f7..a0df0d798dc3e777e6ae3c1bfaf8d93ac682ddd3 100644
--- a/Solver/multiscaleLaplace.cpp
+++ b/Solver/multiscaleLaplace.cpp
@@ -709,7 +709,7 @@ static void printLevel_onlysmall(const char* fn,
   std::vector<MElement *> small;
   double dx[3] = {0,0,0};
   int COUNT = 0;
-  for (int i=0;i<elements.size();i++){
+  for (unsigned i=0;i<elements.size();i++){
     double local_size = localSize(elements[i],*coordinates);
     if (local_size < tolerance){
       small.push_back(elements[i]);