diff --git a/api/GenApi.py b/api/GenApi.py
index 8af6fed82b682eb156ec38aee9d8175468cb0bab..4fa99c3bfaede23f56da2be55a9bc11735e24479 100644
--- a/api/GenApi.py
+++ b/api/GenApi.py
@@ -36,9 +36,7 @@ class arg:
         self.julia_pre = ""
         self.julia_post = ""
         self.julia_return = name
-        self.fortran_type_post = ""
-        self.fortran_name_pre  = ""
-        self.fortran_name_post = ""
+        self.fortran_args = [name]
         self.texi = name + (
             (" = " + self.python_value) if self.python_value else "")
 
@@ -52,7 +50,7 @@ def ibool(name, value=None, python_value=None, julia_value=None):
     a.python_arg = "c_int(bool(" + name + "))"
     a.cwrap_arg = "(int)" + name
     a.julia_ctype = "Cint"
-    a.fortran_type = "integer(c_int), value"
+    a.fortran_types = ["integer(c_int), value"]
     return a
 
 
@@ -61,7 +59,7 @@ def iint(name, value=None, python_value=None, julia_value=None):
             False)
     a.python_arg = "c_int(" + name + ")"
     a.julia_ctype = "Cint"
-    a.fortran_type = "integer(c_int), value"
+    a.fortran_types = ["integer(c_int), value"]
     return a
 
 
@@ -70,7 +68,7 @@ def isize(name, value=None, python_value=None, julia_value=None):
             "const size_t", False)
     a.python_arg = "c_size_t(" + name + ")"
     a.julia_ctype = "Csize_t"
-    a.fortran_type = "integer(c_size_t), value"
+    a.fortran_types = ["integer(c_size_t), value"]
     return a
 
 
@@ -79,7 +77,7 @@ def idouble(name, value=None, python_value=None, julia_value=None):
             "const double", False)
     a.python_arg = "c_double(" + name + ")"
     a.julia_ctype = "Cdouble"
-    a.fortran_type = "real(c_double), value"
+    a.fortran_types = ["real(c_double), value"]
     return a
 
 
@@ -89,8 +87,7 @@ def istring(name, value=None, python_value=None, julia_value=None):
     a.python_arg = "c_char_p(" + name + ".encode())"
     a.cwrap_arg = name + ".c_str()"
     a.julia_ctype = "Ptr{Cchar}"
-    a.fortran_type = "character(len=1, kind=c_char), dimension(*)"
-    a.fortran_type_post = ""
+    a.fortran_types = ["character(len=1, kind=c_char), dimension(*)"]
     return a
 
 
@@ -99,8 +96,7 @@ def ivoidstar(name, value=None, python_value=None, julia_value=None):
             "const void *", False)
     a.python_arg = "c_void_p(" + name + ")"
     a.julia_ctype = "Ptr{Cvoid}"
-    a.fortran_type = "integer(c_int), dimension(*)"
-    a.fortran_type_post = ""
+    a.fortran_types = ["integer(c_int), dimension(*)"]
     return a
 
 
@@ -124,9 +120,8 @@ def ivectorint(name, value=None, python_value=None, julia_value=None):
     a.python_arg = api_name + ", " + api_name_n
     a.julia_ctype = "Ptr{Cint}, Csize_t"
     a.julia_arg = "convert(Vector{Cint}, " + name + "), length(" + name + ")"
-    a.fortran_type = "integer(c_int), dimension(*)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t), value :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["integer(c_int), dimension(*)", "integer(c_size_t), value"]
     return a
 
 
@@ -150,9 +145,8 @@ def ivectorsize(name, value=None, python_value=None, julia_value=None):
     a.python_arg = api_name + ", " + api_name_n
     a.julia_ctype = "Ptr{Csize_t}, Csize_t"
     a.julia_arg = "convert(Vector{Csize_t}, " + name + "), length(" + name + ")"
-    a.fortran_type = "integer(c_size_t), dimension(*)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t), value :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["integer(c_size_t), dimension(*)", "integer(c_size_t), value"]
     return a
 
 
@@ -176,9 +170,8 @@ def ivectordouble(name, value=None, python_value=None, julia_value=None):
     a.python_arg = api_name + ", " + api_name_n
     a.julia_ctype = "Ptr{Cdouble}, Csize_t"
     a.julia_arg = "convert(Vector{Cdouble}, " + name + "), length(" + name + ")"
-    a.fortran_type = "real(c_double), dimension(*)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t), value :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["real(c_double), dimension(*)", "integer(c_size_t), value"]
     return a
 
 
@@ -202,9 +195,8 @@ def ivectorstring(name, value=None, python_value=None, julia_value=None):
     a.python_arg = api_name + ", " + api_name_n
     a.julia_ctype = "Ptr{Ptr{Cchar}}, Csize_t"
     a.julia_arg = name + ", length(" + name + ")"
-    a.fortran_type = "type(c_ptr), dimension(*)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t), value :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), dimension(*)", "integer(c_size_t), value"]
     return a
 
 
@@ -233,9 +225,8 @@ def ivectorpair(name, value=None, python_value=None, julia_value=None):
     a.julia_pre = (api_name + " = collect(Cint, Iterators.flatten(" + name +
                    "))\n    " + api_name_n + " = length(" + api_name + ")")
     a.julia_arg = (api_name + ", " + api_name_n)
-    a.fortran_type = "integer(c_int), dimension(*)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t), value :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["integer(c_int), dimension(*)", "integer(c_size_t), value"]
     return a
 
 
@@ -271,10 +262,8 @@ def ivectorvectorint(name, value=None, python_value=None, julia_value=None):
                    "[i]) for i in 1:length(" + name + ") ]")
     a.julia_arg = ("convert(Vector{Vector{Cint}}," + name + "), " +
                    api_name_n + ", length(" + name + ")")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) :: " + name + "_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -311,10 +300,8 @@ def ivectorvectorsize(name, value=None, python_value=None, julia_value=None):
                    "[i]) for i in 1:length(" + name + ") ]")
     a.julia_arg = ("convert(Vector{Vector{Csize_t}}," + name + "), " +
                    api_name_n + ", length(" + name + ")")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) :: " + name + "_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -351,10 +338,8 @@ def ivectorvectordouble(name, value=None, python_value=None, julia_value=None):
                    "[i]) for i in 1:length(" + name + ") ]")
     a.julia_arg = ("convert(Vector{Vector{Cdouble}}," + name + "), " +
                    api_name_n + ", length(" + name + ")")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) :: " + name + "_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -366,8 +351,7 @@ class oint(arg):
     rc_type = "int"
     rtexi_type = "integer value"
     rjulia_type = "Cint"
-    fortran_type = "integer(c_int)"
-    fortran_type_post = ""
+    fortran_types = ["integer(c_int)"]
 
     def __init__(self, name, value=None, python_value=None, julia_value=None):
         arg.__init__(self, name, value, python_value, julia_value, "int &",
@@ -389,8 +373,7 @@ class osize(arg):
     rc_type = "size_t"
     rtexi_type = "size value"
     rjulia_type = "Csize_t"
-    fortran_type = "integer(c_size_t)"
-    fortran_type_post = ""
+    fortran_types = ["integer(c_size_t)"]
 
     def __init__(self, name, value=None, python_value=None, julia_value=None):
         arg.__init__(self, name, value, python_value, julia_value,
@@ -412,8 +395,7 @@ class odouble(arg):
     rc_type = "double"
     rtexi_type = "floating point value"
     rjulia_type = "Cdouble"
-    fortran_type = "real(c_double)"
-    fortran_type_post = ""
+    fortran_types = ["real(c_double)"]
 
     def __init__(self, name, value=None, python_value=None, julia_value=None):
         arg.__init__(self, name, value, python_value, julia_value, "double &",
@@ -449,7 +431,7 @@ def ostring(name, value=None, python_value=None, julia_value=None):
     a.julia_arg = api_name
     a.julia_post = name + " = unsafe_string(" + api_name + "[])"
     a.fortran_type = "type(c_ptr), dimension(*)"
-    a.fortran_type_post = ""
+    a.fortran_types = ["type(c_ptr), dimension(*)"]
     return a
 
 
@@ -475,9 +457,8 @@ def ovectorint(name, value=None, python_value=None, julia_value=None):
     a.julia_arg = api_name + ", " + api_name_n
     a.julia_post = (name + " = unsafe_wrap(Array, " + api_name + "[], " +
                     api_name_n + "[], own = true)")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t) :: " + name +"_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -503,9 +484,8 @@ def ovectorsize(name, value=None, python_value=None, julia_value=None):
     a.julia_arg = api_name + ", " + api_name_n
     a.julia_post = (name + " = unsafe_wrap(Array, " + api_name + "[], " +
                     api_name_n + "[], own = true)")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t) :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -531,9 +511,8 @@ def ovectordouble(name, value=None, python_value=None, julia_value=None):
     a.julia_arg = api_name + ", " + api_name_n
     a.julia_post = (name + " = unsafe_wrap(Array, " + api_name + "[], " +
                     api_name_n + "[], own = true)")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t) :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -564,9 +543,8 @@ def ovectorstring(name, value=None, python_value=None, julia_value=None):
                     "[], " + api_name_n + "[], own = true)\n    " + name +
                     " = [unsafe_string(tmp_" + api_name +
                     "[i]) for i in 1:length(tmp_" + api_name + ") ]")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t) :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -597,9 +575,8 @@ def ovectorpair(name, value=None, python_value=None, julia_value=None):
                     "[], " + api_name_n + "[], own = true)\n    " + name +
                     " = [ (tmp_" + api_name + "[i], tmp_" + api_name +
                     "[i+1]) " + "for i in 1:2:length(tmp_" + api_name + ") ]")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = " " * 8 + "integer(c_size_t) :: " + name + "_n"
-    a.fortran_name_post = ", " + name + "_n"
+    a.fortran_args = [name, name + "_n"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -641,10 +618,8 @@ def ovectorvectorint(name, value=None, python_value=None, julia_value=None):
                     " = [ unsafe_wrap(Array, tmp_" + api_name + "[i], " +
                     "tmp_" + api_name_n + "[i], own = true) for i in 1:" +
                     api_name_nn + "[] ]")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) :: " + name +"_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -686,10 +661,8 @@ def ovectorvectorsize(name, value=None, python_value=None, julia_value=None):
                     " = [ unsafe_wrap(Array, tmp_" + api_name + "[i], " +
                     "tmp_" + api_name_n + "[i], own = true) for i in 1:" +
                     api_name_nn + "[] ]")
-    a.fortran_type = "type (c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) :: " + name +"_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type (c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -732,10 +705,8 @@ def ovectorvectordouble(name, value=None, python_value=None, julia_value=None):
                     " = [ unsafe_wrap(Array, tmp_" + api_name + "[i], " +
                     "tmp_" + api_name_n + "[i], own = true) for i in 1:" +
                     api_name_nn + "[] ]")
-    a.fortran_type = "type (c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer (c_size_t) :: " + name + "_nn")
-    a.fortran_name_post = ", " + name + "_n,"  + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type (c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -783,10 +754,8 @@ def ovectorvectorpair(name, value=None, python_value=None, julia_value=None):
         api_name + "[i], tmp_" + api_name_n + "[i], own = true)\n    " + "    " +
         name + "[i] = [(tmp[i], tmp[i+1]) for i in 1:2:length(tmp)]\n    " +
         "end")
-    a.fortran_type = "type(c_ptr), intent(out)"
-    a.fortran_type_post = (" " * 8 + "type(c_ptr), intent(out) :: " + name + "_n\n" +
-                           " " * 8 + "integer(c_size_t) ::" + name +"_nn")
-    a.fortran_name_post = ", " + name + "_n," + name + "_nn"
+    a.fortran_args = [name, name + "_n", name + "_nn"]
+    a.fortran_types = ["type(c_ptr), intent(out)", "type(c_ptr), intent(out)", "integer(c_size_t)"]
     return a
 
 
@@ -809,9 +778,8 @@ def iargcargv():
     a.julia_ctype = "Cint, Ptr{Ptr{Cchar}}"
     a.julia_arg = "length(argv), argv"
     a.texi = "(argc = 0)}, @code{argv = []"
-    a.fortran_name_pre = "argc,"
-    a.fortran_type = "integer(c_int), value :: argc\n" + " " * 8 + "type(c_ptr), dimension(*)"
-    a.fortran_type_post = ""
+    a.fortran_args = ["argc", "argv"]
+    a.fortran_types = ["integer(c_int), value", "type(c_ptr), dimension(*)"]
     return a
 
 
@@ -849,8 +817,8 @@ def isizefun(name):
         ", Cdouble, (Cint, Cint, Cdouble, Cdouble, Cdouble, Cdouble, Ptr{Cvoid}))")
     a.julia_arg = "api_" + name + "_, C_NULL"
     a.julia_ctype = "Ptr{Cvoid}, Ptr{Cvoid}"
-    a.fortran_type = "type(c_funptr)"
-    a.fortran_type_post = " " * 8 + "! TODO: callback needs implementation"
+    a.fortran_args = [name]
+    a.fortran_types = ["type(c_funptr)"] # TODO: callback needs implementation"
     return a
 
 
@@ -1856,33 +1824,22 @@ class API:
             self.fwrite(
                 f, "\n" + indent + "!> " +
                 ("\n" + indent + "!! ").join(textwrap.wrap(doc, 75)) + "\n")
-            # Procedure definition
-            fnamef = indent + ("function"
-                               if rtype else "subroutine") + " " + fname + "("
-            # Procedure name and Argument list
-            self.fwrite(
-                f, fnamef + ", ".join(
-                    list((a.fortran_name_pre + a.name + a.fortran_name_post
-                          for a in args + (oint("ierr"), )))) +
-                ") bind(C, name=\"" + fname + "\")" + "\n")
-            # C interoperability
-            self.fwrite(f,
-                        indent * 2 + "use, intrinsic :: iso_c_binding" + "\n")
-            # Return variable definition
+
+            fnamef = ("function" if rtype else "subroutine") + " " + fname
+            r = indent + fnamef + "("
+            for arg in args:
+                for a in arg.fortran_args:
+                    r += a + ", "
+            r += "ierr) bind(C, name=\"" + fname + "\")" + "\n"
+            r += indent * 2 + "use, intrinsic :: iso_c_binding" + "\n"
             if rtype:
-                self.fwrite(
-                    f, indent * 2 + rtype.fortran_type + " :: " + fname + "\n")
-            # Variable defintions
-            self.fwrite(
-                f, "".join(
-                    list((indent * 2 + a.fortran_type + " :: " + a.name +
-                          "\n" + (a.fortran_type_post +
-                                  "\n" if a.fortran_type_post else "")
-                          for a in args + (oint("ierr"), )))))
-            # Procedure end
-            self.fwrite(
-                f, indent + "end " + ("function" if rtype else "subroutine") +
-                " " + fname + "\n")
+                r += indent * 2 + rtype.fortran_types[0] + " :: " + fname + "\n"
+            for arg in args:
+                for t, a in zip(arg.fortran_types, arg.fortran_args):
+                    r += indent * 2 + t + " :: " + a + "\n"
+            r += indent * 2 + "integer(c_int) :: ierr" + "\n"
+            r += indent + "end " + fnamef + "\n"
+            self.fwrite(f, r)
 
         def write_module(f, m, c_mpath, f_mpath, indent):
             f_mpath += m.name + "%"  # Unused, access to user defined type object
diff --git a/api/gmsh.f90 b/api/gmsh.f90
index 2a17beb6feed04ff9afb346ef6069a821de8a69d..001dd0905201cea72e2c93b4fddc1cdd762bd0d9 100644
--- a/api/gmsh.f90
+++ b/api/gmsh.f90
@@ -35,7 +35,7 @@ module gmsh
     !! the API sets the options "General.AbortOnError" to 2 and "General.Terminal"
     !! to 1. If compiled with OpenMP support, it also sets the number of threads
     !! to "General.NumThreads".
-    subroutine gmshInitialize(argc,argv, readConfigFiles, run, ierr) bind(C, name="gmshInitialize")
+    subroutine gmshInitialize(argc, argv, readConfigFiles, run, ierr) bind(C, name="gmshInitialize")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: argc
         type(c_ptr), dimension(*) :: argv
@@ -1021,7 +1021,7 @@ module gmsh
     !! type times the number N of nodes for this type of element, that contains
     !! the node tags of all the elements of the given type, concatenated: [e1n1,
     !! e1n2, ..., e1nN, e2n1, ...].
-    subroutine gmshModelMeshGetElements(elementTypes, elementTypes_n, elementTags, elementTags_n,elementTags_nn, nodeTags, nodeTags_n,nodeTags_nn, dim, tag, ierr) bind(C, name="gmshModelMeshGetElements")
+    subroutine gmshModelMeshGetElements(elementTypes, elementTypes_n, elementTags, elementTags_n, elementTags_nn, nodeTags, nodeTags_n, nodeTags_nn, dim, tag, ierr) bind(C, name="gmshModelMeshGetElements")
         use, intrinsic :: iso_c_binding
         type(c_ptr), intent(out) :: elementTypes
         integer(c_size_t) :: elementTypes_n
@@ -1226,7 +1226,7 @@ module gmsh
     !! the number N of nodes per element, that contains the node tags of all the
     !! elements of the given type, concatenated: [e1n1, e1n2, ..., e1nN, e2n1,
     !! ...].
-    subroutine gmshModelMeshAddElements(dim, tag, elementTypes, elementTypes_n, elementTags, elementTags_n,elementTags_nn, nodeTags, nodeTags_n,nodeTags_nn, ierr) bind(C, name="gmshModelMeshAddElements")
+    subroutine gmshModelMeshAddElements(dim, tag, elementTypes, elementTypes_n, elementTags, elementTags_n, elementTags_nn, nodeTags, nodeTags_n, nodeTags_nn, ierr) bind(C, name="gmshModelMeshAddElements")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: dim
         integer(c_int), value :: tag
@@ -1740,7 +1740,6 @@ module gmsh
     subroutine gmshModelMeshSetSizeCallback(callback, ierr) bind(C, name="gmshModelMeshSetSizeCallback")
         use, intrinsic :: iso_c_binding
         type(c_funptr) :: callback
-        ! TODO: callback needs implementation
         integer(c_int) :: ierr
     end subroutine gmshModelMeshSetSizeCallback
 
@@ -3676,7 +3675,7 @@ module gmsh
     !! explicitly (only valid if the boolean operation results in a single
     !! entity). Remove the object if `removeObject' is set. Remove the tool if
     !! `removeTool' is set.
-    subroutine gmshModelOccFuse(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n,outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccFuse")
+    subroutine gmshModelOccFuse(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n, outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccFuse")
         use, intrinsic :: iso_c_binding
         integer(c_int), dimension(*) :: objectDimTags
         integer(c_size_t), value :: objectDimTags_n
@@ -3686,7 +3685,7 @@ module gmsh
         integer(c_size_t) :: outDimTags_n
         type(c_ptr), intent(out) :: outDimTagsMap
         type(c_ptr), intent(out) :: outDimTagsMap_n
-        integer(c_size_t) ::outDimTagsMap_nn
+        integer(c_size_t) :: outDimTagsMap_nn
         integer(c_int), value :: tag
         integer(c_int), value :: removeObject
         integer(c_int), value :: removeTool
@@ -3699,7 +3698,7 @@ module gmsh
     !! set the tag explicitly (only valid if the boolean operation results in a
     !! single entity). Remove the object if `removeObject' is set. Remove the tool
     !! if `removeTool' is set.
-    subroutine gmshModelOccIntersect(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n,outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccIntersect")
+    subroutine gmshModelOccIntersect(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n, outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccIntersect")
         use, intrinsic :: iso_c_binding
         integer(c_int), dimension(*) :: objectDimTags
         integer(c_size_t), value :: objectDimTags_n
@@ -3709,7 +3708,7 @@ module gmsh
         integer(c_size_t) :: outDimTags_n
         type(c_ptr), intent(out) :: outDimTagsMap
         type(c_ptr), intent(out) :: outDimTagsMap_n
-        integer(c_size_t) ::outDimTagsMap_nn
+        integer(c_size_t) :: outDimTagsMap_nn
         integer(c_int), value :: tag
         integer(c_int), value :: removeObject
         integer(c_int), value :: removeTool
@@ -3722,7 +3721,7 @@ module gmsh
     !! explicitly (only valid if the boolean operation results in a single
     !! entity). Remove the object if `removeObject' is set. Remove the tool if
     !! `removeTool' is set.
-    subroutine gmshModelOccCut(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n,outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccCut")
+    subroutine gmshModelOccCut(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n, outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccCut")
         use, intrinsic :: iso_c_binding
         integer(c_int), dimension(*) :: objectDimTags
         integer(c_size_t), value :: objectDimTags_n
@@ -3732,7 +3731,7 @@ module gmsh
         integer(c_size_t) :: outDimTags_n
         type(c_ptr), intent(out) :: outDimTagsMap
         type(c_ptr), intent(out) :: outDimTagsMap_n
-        integer(c_size_t) ::outDimTagsMap_nn
+        integer(c_size_t) :: outDimTagsMap_nn
         integer(c_int), value :: tag
         integer(c_int), value :: removeObject
         integer(c_int), value :: removeTool
@@ -3748,7 +3747,7 @@ module gmsh
     !! If `tag' is positive, try to set the tag explicitly (only valid if the
     !! boolean operation results in a single entity). Remove the object if
     !! `removeObject' is set. Remove the tool if `removeTool' is set.
-    subroutine gmshModelOccFragment(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n,outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccFragment")
+    subroutine gmshModelOccFragment(objectDimTags, objectDimTags_n, toolDimTags, toolDimTags_n, outDimTags, outDimTags_n, outDimTagsMap, outDimTagsMap_n, outDimTagsMap_nn, tag, removeObject, removeTool, ierr) bind(C, name="gmshModelOccFragment")
         use, intrinsic :: iso_c_binding
         integer(c_int), dimension(*) :: objectDimTags
         integer(c_size_t), value :: objectDimTags_n
@@ -3758,7 +3757,7 @@ module gmsh
         integer(c_size_t) :: outDimTags_n
         type(c_ptr), intent(out) :: outDimTagsMap
         type(c_ptr), intent(out) :: outDimTagsMap_n
-        integer(c_size_t) ::outDimTagsMap_nn
+        integer(c_size_t) :: outDimTagsMap_nn
         integer(c_int), value :: tag
         integer(c_int), value :: removeObject
         integer(c_int), value :: removeTool
@@ -3987,7 +3986,7 @@ module gmsh
     !> Get the tags `curveLoopTags' of the curve loops making up the surface of
     !! tag `surfaceTag', as well as the tags `curveTags' of the curves making up
     !! each curve loop.
-    subroutine gmshModelOccGetCurveLoops(surfaceTag, curveLoopTags, curveLoopTags_n, curveTags, curveTags_n,curveTags_nn, ierr) bind(C, name="gmshModelOccGetCurveLoops")
+    subroutine gmshModelOccGetCurveLoops(surfaceTag, curveLoopTags, curveLoopTags_n, curveTags, curveTags_n, curveTags_nn, ierr) bind(C, name="gmshModelOccGetCurveLoops")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: surfaceTag
         type(c_ptr), intent(out) :: curveLoopTags
@@ -4001,7 +4000,7 @@ module gmsh
     !> Get the tags `surfaceLoopTags' of the surface loops making up the volume of
     !! tag `volumeTag', as well as the tags `surfaceTags' of the surfaces making
     !! up each surface loop.
-    subroutine gmshModelOccGetSurfaceLoops(volumeTag, surfaceLoopTags, surfaceLoopTags_n, surfaceTags, surfaceTags_n,surfaceTags_nn, ierr) bind(C, name="gmshModelOccGetSurfaceLoops")
+    subroutine gmshModelOccGetSurfaceLoops(volumeTag, surfaceLoopTags, surfaceLoopTags_n, surfaceTags, surfaceTags_n, surfaceTags_nn, ierr) bind(C, name="gmshModelOccGetSurfaceLoops")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: volumeTag
         type(c_ptr), intent(out) :: surfaceLoopTags
@@ -4132,7 +4131,7 @@ module gmsh
     !! number of data components (1 for scalar data, 3 for vector data, etc.) per
     !! entity; if negative, it is automatically inferred (when possible) from the
     !! input data. `partition' allows one to specify data in several sub-sets.
-    subroutine gmshViewAddModelData(tag, step, modelName, dataType, tags, tags_n, data, data_n,data_nn, time, numComponents, partition, ierr) bind(C, name="gmshViewAddModelData")
+    subroutine gmshViewAddModelData(tag, step, modelName, dataType, tags, tags_n, data, data_n, data_nn, time, numComponents, partition, ierr) bind(C, name="gmshViewAddModelData")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: tag
         integer(c_int), value :: step
@@ -4174,7 +4173,7 @@ module gmsh
     !! `step'. Return the `data' associated to the nodes or the elements with tags
     !! `tags', as well as the `dataType' and the number of components
     !! `numComponents'.
-    subroutine gmshViewGetModelData(tag, step, dataType, tags, tags_n, data, data_n,data_nn, time, numComponents, ierr) bind(C, name="gmshViewGetModelData")
+    subroutine gmshViewGetModelData(tag, step, dataType, tags, tags_n, data, data_n, data_nn, time, numComponents, ierr) bind(C, name="gmshViewGetModelData")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: tag
         integer(c_int), value :: step
@@ -4183,7 +4182,7 @@ module gmsh
         integer(c_size_t) :: tags_n
         type (c_ptr), intent(out) :: data
         type(c_ptr), intent(out) :: data_n
-        integer (c_size_t) :: data_nn
+        integer(c_size_t) :: data_nn
         real(c_double) :: time
         integer(c_int) :: numComponents
         integer(c_int) :: ierr
@@ -4230,7 +4229,7 @@ module gmsh
     !> Get list-based post-processing data from the view with tag `tag'. Return
     !! the types `dataTypes', the number of elements `numElements' for each data
     !! type and the `data' for each data type.
-    subroutine gmshViewGetListData(tag, dataType, dataType_n, numElements, numElements_n, data, data_n,data_nn, ierr) bind(C, name="gmshViewGetListData")
+    subroutine gmshViewGetListData(tag, dataType, dataType_n, numElements, numElements_n, data, data_n, data_nn, ierr) bind(C, name="gmshViewGetListData")
         use, intrinsic :: iso_c_binding
         integer(c_int), value :: tag
         type(c_ptr), intent(out) :: dataType
@@ -4239,7 +4238,7 @@ module gmsh
         integer(c_size_t) :: numElements_n
         type (c_ptr), intent(out) :: data
         type(c_ptr), intent(out) :: data_n
-        integer (c_size_t) :: data_nn
+        integer(c_size_t) :: data_nn
         integer(c_int) :: ierr
     end subroutine gmshViewGetListData