diff --git a/CHANGES/v2.4.txt b/CHANGES/v2.4.txt
index 7476ed435fe2473bb933353876f0ceef77c0735a..3a2f658face8feab1f761ac83f70c1c929157602 100644
--- a/CHANGES/v2.4.txt
+++ b/CHANGES/v2.4.txt
@@ -30,6 +30,8 @@ Changes from version 2.3 which are relevant for users:
     to recover free energy also in this case.
   - PDB files with more than 100k atoms can now be read using [hybrid 36](http://cci.lbl.gov/hybrid_36/) format,
     see \issue{226}.
+  - Trajectories read in \ref driver also support the usual replica convention, that is if
+    trajectory with replica suffix is not found the driver will look for a trajectory without the replica suffix.
   - Internal molfile implementation has been updated to VMD 1.9.3.
   - Examples in the documentation now have syntax highlighting and links to the documentation of used actions.
 
diff --git a/regtest/basic/rt-fix-228/COLVAR.0.reference b/regtest/basic/rt-fix-228/COLVAR.0.reference
new file mode 100644
index 0000000000000000000000000000000000000000..02d36ac86acd957dc5566aeec75b985e513e0978
--- /dev/null
+++ b/regtest/basic/rt-fix-228/COLVAR.0.reference
@@ -0,0 +1,2 @@
+#! FIELDS time d
+ 0.000000 1.732051
diff --git a/regtest/basic/rt-fix-228/COLVAR.1.reference b/regtest/basic/rt-fix-228/COLVAR.1.reference
new file mode 100644
index 0000000000000000000000000000000000000000..48952e84922f4213c93032ec1d017332347b5773
--- /dev/null
+++ b/regtest/basic/rt-fix-228/COLVAR.1.reference
@@ -0,0 +1,2 @@
+#! FIELDS time d
+ 0.000000 6.928203
diff --git a/regtest/basic/rt-fix-228/Makefile b/regtest/basic/rt-fix-228/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..3703b27cea227aa053fb6d1d73f861e4384dbcee
--- /dev/null
+++ b/regtest/basic/rt-fix-228/Makefile
@@ -0,0 +1 @@
+include ../../scripts/test.make
diff --git a/regtest/basic/rt-fix-228/config b/regtest/basic/rt-fix-228/config
new file mode 100644
index 0000000000000000000000000000000000000000..4ae6da5caf62b180ea7904e4a70de920753964f3
--- /dev/null
+++ b/regtest/basic/rt-fix-228/config
@@ -0,0 +1,4 @@
+mpiprocs=2
+type=driver
+# this is to test a different name
+arg="--plumed plumed.dat --ixyz traj.xyz --multi 2"
diff --git a/regtest/basic/rt-fix-228/plumed.0.dat b/regtest/basic/rt-fix-228/plumed.0.dat
new file mode 100644
index 0000000000000000000000000000000000000000..e74e380096b4a8459b0199929bd9ba66a430d2f4
--- /dev/null
+++ b/regtest/basic/rt-fix-228/plumed.0.dat
@@ -0,0 +1,2 @@
+d: DISTANCE ATOMS=1,2
+PRINT ARG=d FILE=COLVAR
diff --git a/regtest/basic/rt-fix-228/plumed.1.dat b/regtest/basic/rt-fix-228/plumed.1.dat
new file mode 100644
index 0000000000000000000000000000000000000000..b16f2d7a092833aa76db3752427ccbd6e12192a7
--- /dev/null
+++ b/regtest/basic/rt-fix-228/plumed.1.dat
@@ -0,0 +1,2 @@
+d: DISTANCE ATOMS=1,3
+PRINT ARG=d FILE=COLVAR
diff --git a/regtest/basic/rt-fix-228/traj.xyz b/regtest/basic/rt-fix-228/traj.xyz
new file mode 100644
index 0000000000000000000000000000000000000000..6a43046ec4e9b39a93a2eb9ff7de4e1e52d7bf66
--- /dev/null
+++ b/regtest/basic/rt-fix-228/traj.xyz
@@ -0,0 +1,5 @@
+3
+0 0 0
+Ar 1 2 3
+Ar 2 3 4
+Ar 5 6 7
diff --git a/src/cltools/Driver.cpp b/src/cltools/Driver.cpp
index 02435ea656e1b84484cce2d382e6f22bb1c8744f..1a3bf513d3774681c2caf99c57a40dc06e34b1d7 100644
--- a/src/cltools/Driver.cpp
+++ b/src/cltools/Driver.cpp
@@ -471,13 +471,6 @@ int Driver<real>::main(FILE* in,FILE*out,Communicator& pc) {
   p.cmd("setPlumedDat",plumedFile.c_str());
   p.cmd("setLog",out);
 
-  if(multi) {
-    string n;
-    Tools::convert(intercomm.Get_rank(),n);
-    trajectoryFile=FileBase::appendSuffix(trajectoryFile,"."+n);
-  }
-
-
   int natoms;
 
   FILE* fp=NULL; FILE* fp_forces=NULL; OFile fp_dforces;
@@ -488,6 +481,13 @@ int Driver<real>::main(FILE* in,FILE*out,Communicator& pc) {
     if (trajectoryFile=="-")
       fp=in;
     else {
+      if(multi) {
+        string n;
+        Tools::convert(intercomm.Get_rank(),n);
+        std::string testfile=FileBase::appendSuffix(trajectoryFile,"."+n);
+        FILE* tmp_fp=fopen(testfile.c_str(),"r");
+        if(tmp_fp) { fclose(tmp_fp); trajectoryFile=testfile.c_str();}
+      }
       if(use_molfile==true) {
 #ifdef __PLUMED_HAS_MOLFILE_PLUGINS
         h_in = api->open_file_read(trajectoryFile.c_str(), trajectory_fmt.c_str(), &natoms);
diff --git a/user-doc/Files.txt b/user-doc/Files.txt
index dac3ebe472d72f1422fac6a8981b30906a532af1..3c1c4c8afb9073daab0fcb7158cdade8338c8d64 100644
--- a/user-doc/Files.txt
+++ b/user-doc/Files.txt
@@ -45,9 +45,8 @@ If you provide a file for each replica (e.g. plumed.0.dat, plumed.1.dat, etc) yo
 setup plumed differently on each replica. 
 On the other hand, using a single plumed.dat will make all the replicas read the same file.
 
-\warning This rule is true for almost all the files read by PLUMED. Current exceptions
-  are PDB files, where the replica suffix is not added, and trajectories read by \ref driver,
-  for which the replica suffix is always added.
+\warning This rule is true for almost all the files read by PLUMED. As of
+  PLUMED version 2.4, the only exception is PDB files, where the replica suffix is not added.
 
 Notice that when PLUMED adds the replica suffix, it recognizes the file extension and add the suffix _before_ the
 extension. Before PLUMED 2.2, the only recognized suffix was ".gz". Since 2.2, any suffix with length