diff --git a/regtest/basic/rt-make-wrappers/main.cpp b/regtest/basic/rt-make-wrappers/main.cpp
index ac0f5c3069713a5597d1906bad08f141f812968e..af84b9871cd82af1cd3aff8a84c2a7b047bd15dc 100644
--- a/regtest/basic/rt-make-wrappers/main.cpp
+++ b/regtest/basic/rt-make-wrappers/main.cpp
@@ -14,8 +14,8 @@ extern "C"{
   void plumed_f_gfinalize();
   void plumed_f_global(char*c);
   void plumed_f_create(char*c);
-  void plumed_f_create_dlopen(char*c,char*p);
-  void plumed_f_create_reference(char*p,char*r);
+  void plumed_f_create_dlopen(char*p,char*c);
+  void plumed_f_create_reference(char*r,char*c);
   void plumed_f_cmd(char*c,char* key,void* val);
   void plumed_f_finalize(char*c);
   void plumed_f_use_count(char*c,int*i);
@@ -27,8 +27,8 @@ extern "C"{
   void plumed_f_gfinalize_();
   void plumed_f_global_(char*c);
   void plumed_f_create_(char*c);
-  void plumed_f_create_dlopen_(char*c,char*p);
-  void plumed_f_create_reference_(char*p,char*r);
+  void plumed_f_create_dlopen_(char*p,char*c);
+  void plumed_f_create_reference_(char*r,char*c);
   void plumed_f_cmd_(char*c,char* key,void* val);
   void plumed_f_finalize_(char*c);
   void plumed_f_use_count_(char*c,int*i);
@@ -40,8 +40,8 @@ extern "C"{
   void plumed_f_gfinalize__();
   void plumed_f_global__(char*c);
   void plumed_f_create__(char*c);
-  void plumed_f_create_dlopen__(char*c,char*p);
-  void plumed_f_create_reference__(char*p,char*r);
+  void plumed_f_create_dlopen__(char*p,char*c);
+  void plumed_f_create_reference__(char*r,char*c);
   void plumed_f_cmd__(char*c,char* key,void* val);
   void plumed_f_finalize__(char*c);
   void plumed_f_use_count__(char*c,int*i);
@@ -53,8 +53,8 @@ extern "C"{
   void PLUMED_F_GFINALIZE();
   void PLUMED_F_GLOBAL(char*c);
   void PLUMED_F_CREATE(char*c);
-  void PLUMED_F_CREATE_DLOPEN(char*c,char*p);
-  void PLUMED_F_CREATE_REFERENCE(char*p,char*r);
+  void PLUMED_F_CREATE_DLOPEN(char*p,char*c);
+  void PLUMED_F_CREATE_REFERENCE(char*r,char*c);
   void PLUMED_F_CMD(char*c,char* key,void* val);
   void PLUMED_F_FINALIZE(char*c);
   void PLUMED_F_USE_COUNT(char*c,int*i);
@@ -66,8 +66,8 @@ extern "C"{
   void PLUMED_F_GFINALIZE_();
   void PLUMED_F_GLOBAL_(char*c);
   void PLUMED_F_CREATE_(char*c);
-  void PLUMED_F_CREATE_DLOPEN_(char*c,char*p);
-  void PLUMED_F_CREATE_REFERENCE_(char*p,char*r);
+  void PLUMED_F_CREATE_DLOPEN_(char*p,char*c);
+  void PLUMED_F_CREATE_REFERENCE_(char*r,char*c);
   void PLUMED_F_CMD_(char*c,char* key,void* val);
   void PLUMED_F_FINALIZE_(char*c);
   void PLUMED_F_USE_COUNT_(char*c,int*i);
@@ -79,8 +79,8 @@ extern "C"{
   void PLUMED_F_GFINALIZE__();
   void PLUMED_F_GLOBAL__(char*c);
   void PLUMED_F_CREATE__(char*c);
-  void PLUMED_F_CREATE_DLOPEN__(char*c,char*p);
-  void PLUMED_F_CREATE_REFERENCE__(char*p,char*r);
+  void PLUMED_F_CREATE_DLOPEN__(char*p,char*c);
+  void PLUMED_F_CREATE_REFERENCE__(char*r,char*c);
   void PLUMED_F_CMD__(char*c,char* key,void* val);
   void PLUMED_F_FINALIZE__(char*c);
   void PLUMED_F_USE_COUNT__(char*c,int*i);
@@ -346,7 +346,7 @@ int main(){
     {
 // test dlopen
       char p[32];
-      plumed_f_create_dlopen(p,std::getenv("PLUMED_KERNEL"));
+      plumed_f_create_dlopen(std::getenv("PLUMED_KERNEL"),p);
       testme(p,plumed_f_cmd);
       plumed_f_finalize(p);
     }
@@ -357,7 +357,7 @@ int main(){
       plumed_f_create(p);
       plumed_f_use_count(p,&count);
       if(count!=1) plumed_error();
-      plumed_f_create_reference(q,p);
+      plumed_f_create_reference(p,q);
       plumed_f_use_count(p,&count);
       if(count!=2) plumed_error();
       plumed_f_finalize(p);
@@ -395,9 +395,9 @@ int main(){
     {
 // test dlopen
       char p[32];
-      plumed_f_create_dlopen(p,std::getenv("PLUMED_KERNEL"));
-      testme(p,plumed_f_cmd);
-      plumed_f_finalize(p);
+      plumed_f_create_dlopen_(std::getenv("PLUMED_KERNEL"),p);
+      testme(p,plumed_f_cmd_);
+      plumed_f_finalize_(p);
     }
 // test use_count
     {
@@ -406,7 +406,7 @@ int main(){
       plumed_f_create_(p);
       plumed_f_use_count_(p,&count);
       if(count!=1) plumed_error();
-      plumed_f_create_reference_(q,p);
+      plumed_f_create_reference_(p,q);
       plumed_f_use_count_(p,&count);
       if(count!=2) plumed_error();
       plumed_f_finalize_(p);
@@ -444,7 +444,7 @@ int main(){
     {
 // test dlopen
       char p[32];
-      plumed_f_create_dlopen__(p,std::getenv("PLUMED_KERNEL"));
+      plumed_f_create_dlopen__(std::getenv("PLUMED_KERNEL"),p);
       testme(p,plumed_f_cmd__);
       plumed_f_finalize__(p);
     }
@@ -455,7 +455,7 @@ int main(){
       plumed_f_create__(p);
       plumed_f_use_count__(p,&count);
       if(count!=1) plumed_error();
-      plumed_f_create_reference__(q,p);
+      plumed_f_create_reference__(p,q);
       plumed_f_use_count__(p,&count);
       if(count!=2) plumed_error();
       plumed_f_finalize__(p);
@@ -493,7 +493,7 @@ int main(){
     {
 // test dlopen
       char p[32];
-      PLUMED_F_CREATE_DLOPEN(p,std::getenv("PLUMED_KERNEL"));
+      PLUMED_F_CREATE_DLOPEN(std::getenv("PLUMED_KERNEL"),p);
       testme(p,PLUMED_F_CMD);
       PLUMED_F_FINALIZE(p);
     }
@@ -504,7 +504,7 @@ int main(){
       PLUMED_F_CREATE(p);
       PLUMED_F_USE_COUNT(p,&count);
       if(count!=1) plumed_error();
-      PLUMED_F_CREATE_REFERENCE(q,p);
+      PLUMED_F_CREATE_REFERENCE(p,q);
       PLUMED_F_USE_COUNT(p,&count);
       if(count!=2) plumed_error();
       PLUMED_F_FINALIZE(p);
@@ -542,7 +542,7 @@ int main(){
     {
 // test dlopen
       char p[32];
-      PLUMED_F_CREATE_DLOPEN_(p,std::getenv("PLUMED_KERNEL"));
+      PLUMED_F_CREATE_DLOPEN_(std::getenv("PLUMED_KERNEL"),p);
       testme(p,PLUMED_F_CMD_);
       PLUMED_F_FINALIZE_(p);
     }
@@ -553,7 +553,7 @@ int main(){
       PLUMED_F_CREATE_(p);
       PLUMED_F_USE_COUNT_(p,&count);
       if(count!=1) plumed_error();
-      PLUMED_F_CREATE_REFERENCE_(q,p);
+      PLUMED_F_CREATE_REFERENCE_(p,q);
       PLUMED_F_USE_COUNT_(p,&count);
       if(count!=2) plumed_error();
       PLUMED_F_FINALIZE_(p);
@@ -591,7 +591,7 @@ int main(){
     {
 // test dlopen
       char p[32];
-      PLUMED_F_CREATE_DLOPEN__(p,std::getenv("PLUMED_KERNEL"));
+      PLUMED_F_CREATE_DLOPEN__(std::getenv("PLUMED_KERNEL"),p);
       testme(p,PLUMED_F_CMD__);
       PLUMED_F_FINALIZE__(p);
     }
@@ -602,7 +602,7 @@ int main(){
       PLUMED_F_CREATE__(p);
       PLUMED_F_USE_COUNT__(p,&count);
       if(count!=1) plumed_error();
-      PLUMED_F_CREATE_REFERENCE__(q,p);
+      PLUMED_F_CREATE_REFERENCE__(p,q);
       PLUMED_F_USE_COUNT__(p,&count);
       if(count!=2) plumed_error();
       PLUMED_F_FINALIZE__(p);
diff --git a/src/wrapper/Plumed.h b/src/wrapper/Plumed.h
index 9dc5e840ee1076f35e92a49adae14643e7e79b1a..737dd754a7297a1102ebe9c406b0344198d5182c 100644
--- a/src/wrapper/Plumed.h
+++ b/src/wrapper/Plumed.h
@@ -250,7 +250,7 @@
   In addition, all `plumed` objects are replaced by `CHARACTER(LEN=32)` objects
   holding the same information. Finally, whenever a C function returns a value,
   the corresponding FORTRAN subroutine will have an additional `INTENT(OUT)` parameter
-  passed as the its first argument.
+  passed as the its last argument.
 
   When you compile the FORTRAN interface, wrapper functions are added with several possible
   name mangligs, so you should not experience problems linking the plumed library with a FORTRAN file.
@@ -2259,11 +2259,11 @@ __PLUMED_IMPLEMENT_FORTRAN(plumed_f_create,PLUMED_F_CREATE,(char*c),(c)) {
   plumed_c2f(plumed_create(),c);
 }
 
-__PLUMED_IMPLEMENT_FORTRAN(plumed_f_create_dlopen,PLUMED_F_CREATE_DLOPEN,(char*c,char*path),(c,path)) {
+__PLUMED_IMPLEMENT_FORTRAN(plumed_f_create_dlopen,PLUMED_F_CREATE_DLOPEN,(char*path,char*c),(path,c)) {
   plumed_c2f(plumed_create_dlopen(path),c);
 }
 
-__PLUMED_IMPLEMENT_FORTRAN(plumed_f_create_reference,PLUMED_F_CREATE_REFERENCE,(char* c,char*r),(c,r)) {
+__PLUMED_IMPLEMENT_FORTRAN(plumed_f_create_reference,PLUMED_F_CREATE_REFERENCE,(char* r,char*c),(r,c)) {
   plumed_c2f(plumed_create_reference_f(r),c);
 }