diff --git a/Numeric/pointsGenerators.cpp b/Numeric/pointsGenerators.cpp
index f5eca95871aec45e5cba614b37b31af77a03a07f..3c8de9f6898369d03bbf87f13eee79fdb03c709d 100644
--- a/Numeric/pointsGenerators.cpp
+++ b/Numeric/pointsGenerators.cpp
@@ -140,7 +140,7 @@ fullMatrix<double> gmshGenerateMonomialsTriangle(int order, bool serendip)
           monomials(index, 1) = monomials(i0, 1) + u_1 * i;
         }
       }
-      if (!serendip) {
+      if (!serendip && order > 2) {
         fullMatrix<double> inner = gmshGenerateMonomialsTriangle(order-3);
         inner.add(1);
         monomials.copy(inner, 0, nbMonomials - index, 0, 2, index, 0);
@@ -380,8 +380,10 @@ fullMatrix<double> gmshGenerateMonomialsPrism(int order, bool forSerendipPoints)
         dudvQ.add(1);
 
         fullMatrix<double> dudvT;
-        if (order > 2)  dudvT = gmshGenerateMonomialsTriangle(order - 3);
-        dudvT.add(1);
+        if (order > 2) {
+          dudvT = gmshGenerateMonomialsTriangle(order - 3);
+          dudvT.add(1);
+        }
 
         for (int iface = 0; iface < 5; ++iface) {
           int i0, i1, i2;
@@ -715,8 +717,10 @@ fullMatrix<double> gmshGenerateMonomialsPyramid(int order, bool forSerendipPoint
         dudvQ.add(1);
 
         fullMatrix<double> dudvT;
-        if (order > 2)  dudvT = gmshGenerateMonomialsTriangle(order - 3);
-        dudvT.add(1);
+        if (order > 2) {
+          dudvT = gmshGenerateMonomialsTriangle(order - 3);
+          dudvT.add(1);
+        }
 
         for (int iface = 0; iface < 5; ++iface) {
           int i0, i1, i2;