diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index 11a26fb8c8d9f96b9560dd86bc4c03ab4c58e15c..8583eb8825a06dcd69e5ed90d04c4bcb20cd9dd6 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -9475,7 +9475,7 @@ yyreduce:
 
   case 350:
 #line 4301 "Gmsh.y"
-    { (yyval.d) = round((yyvsp[(3) - (4)].d));    ;}
+    { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5); ;}
     break;
 
   case 351:
@@ -9585,7 +9585,7 @@ yyreduce:
 
   case 372:
 #line 4325 "Gmsh.y"
-    { (yyval.d) = round((yyvsp[(3) - (4)].d));    ;}
+    { (yyval.d) = floor((yyvsp[(3) - (4)].d) + 0.5);    ;}
     break;
 
   case 373:
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 34d3f25eb446a7d31e7375b2ae3ff7023afb613a..07fe368ea141c240733261147c74cdac33f29365 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -4298,7 +4298,7 @@ FExpr :
   | tFabs   '(' FExpr ')'            { $$ = fabs($3);     }
   | tFloor  '(' FExpr ')'            { $$ = floor($3);    }
   | tCeil   '(' FExpr ')'            { $$ = ceil($3);     }
-  | tRound  '(' FExpr ')'            { $$ = round($3);    }
+  | tRound  '(' FExpr ')'            { $$ = floor($3 + 0.5); }
   | tFmod   '(' FExpr ',' FExpr ')'  { $$ = fmod($3, $5); }
   | tModulo '(' FExpr ',' FExpr ')'  { $$ = fmod($3, $5); }
   | tHypot  '(' FExpr ',' FExpr ')'  { $$ = sqrt($3 * $3 + $5 * $5); }
@@ -4322,7 +4322,7 @@ FExpr :
   | tFabs   '[' FExpr ']'            { $$ = fabs($3);     }
   | tFloor  '[' FExpr ']'            { $$ = floor($3);    }
   | tCeil   '[' FExpr ']'            { $$ = ceil($3);     }
-  | tRound  '[' FExpr ']'            { $$ = round($3);    }
+  | tRound  '[' FExpr ']'            { $$ = floor($3 + 0.5);    }
   | tFmod   '[' FExpr ',' FExpr ']'  { $$ = fmod($3, $5); }
   | tModulo '[' FExpr ',' FExpr ']'  { $$ = fmod($3, $5); }
   | tHypot  '[' FExpr ',' FExpr ']'  { $$ = sqrt($3 * $3 + $5 * $5); }