diff --git a/src/analysis/Analysis.cpp b/src/analysis/Analysis.cpp
index 648f3e1e2b2730b2bc8bd76ba2fb082615b6fb86..cedef3453d271668f34ca9199ff0da95cf0c226d 100644
--- a/src/analysis/Analysis.cpp
+++ b/src/analysis/Analysis.cpp
@@ -302,7 +302,7 @@ void Analysis::accumulate(){
   // Write data to checkpoint file
   if( write_chq ){
      rfile.rewind();
-     data[idata]->print( rfile, getTime(), logweights[idata], old_norm );
+     data[idata]->print( rfile, getTime(), logweights[idata], atoms.getUnits().getLength()/0.1, old_norm );
      rfile.flush();
   }
   // Increment data counter
diff --git a/src/analysis/ClassicalMultiDimensionalScaling.cpp b/src/analysis/ClassicalMultiDimensionalScaling.cpp
index 326be72535eed45f585fd963c18df778e49107b6..c3e280693ee054cb1c0e84c24798a2612baa31fd 100644
--- a/src/analysis/ClassicalMultiDimensionalScaling.cpp
+++ b/src/analysis/ClassicalMultiDimensionalScaling.cpp
@@ -239,7 +239,7 @@ void ClassicalMultiDimensionalScaling::analyzeLandmarks(){
   if( efilename!="dont output"){
      OFile afile; afile.link(*this); afile.setBackupString("analysis");
      afile.open( efilename.c_str() );
-     myembedding->print( "classical mds", getTime(), afile, getOutputFormat() );
+     myembedding->print( "classical mds", getTime(), afile, getOutputFormat(), atoms.getUnits().getLength()/0.1 );
      afile.close();
   }
 }
diff --git a/src/reference/PointWiseMapping.cpp b/src/reference/PointWiseMapping.cpp
index 5bad59140701a88b00c559bb784463ff9317a502..d7cd3853866a284244c2c8ac4b71308a9b2d89e1 100644
--- a/src/reference/PointWiseMapping.cpp
+++ b/src/reference/PointWiseMapping.cpp
@@ -77,7 +77,8 @@ unsigned PointWiseMapping::getPropertyIndex( const std::string& name ) const {
   return 0;
 }
 
-void PointWiseMapping::print( const std::string& method, const double & time, OFile& afile, const std::string& fmt ){
+void PointWiseMapping::print( const std::string& method, const double & time, OFile& afile, 
+                              const std::string& fmt, const double& lunits ){
   std::string descr2, descr="DESCRIPTION: results from %s analysis performed at time " + fmt +"\n";
   afile.printf(descr.c_str(), method.c_str(), time );
   if(fmt.find("-")!=std::string::npos){
@@ -93,7 +94,7 @@ void PointWiseMapping::print( const std::string& method, const double & time, OF
       afile.printf(descr.c_str(), frames[i]->getWeight(), property[0].c_str(), low_dim[i][0] );
       for(unsigned j=1;j<property.size();++j) afile.printf(descr2.c_str(), property[j].c_str(), low_dim[i][j]);
       afile.printf("\n"); 
-      frames[i]->print( afile, fmt );
+      frames[i]->print( afile, fmt, lunits );
   }
 } 
 
diff --git a/src/reference/PointWiseMapping.h b/src/reference/PointWiseMapping.h
index c6bf181c5e19cf1f7e54e28c9244ef05f63ece50..878acc54c6ff0ab45b30e5c2588f8364fcfd99aa 100644
--- a/src/reference/PointWiseMapping.h
+++ b/src/reference/PointWiseMapping.h
@@ -71,7 +71,8 @@ public:
 /// Get a pointer to the matrix of pairwise distances
   Matrix<double>& modifyDmat();
 /// Print out the low dimensional mapping
-  void print( const std::string& method, const double & time, OFile& afile, const std::string& fmt );
+  void print( const std::string& method, const double & time, OFile& afile, 
+              const std::string& fmt, const double& lunits );
 /// Get the low dimensional embedding coordinate
   double getProjectionCoordinate( const unsigned& iframe, const unsigned& jcoord ) const ;
 /// Set the value of the projection coordinate
diff --git a/src/reference/ReferenceAtoms.cpp b/src/reference/ReferenceAtoms.cpp
index db08ff75280d89a813c225bd18f586ff0f41a2a0..f958ac1d6017914fd6d588e8b564cf275639efb3 100644
--- a/src/reference/ReferenceAtoms.cpp
+++ b/src/reference/ReferenceAtoms.cpp
@@ -50,11 +50,11 @@ void ReferenceAtoms::setAtomNumbers( const std::vector<AtomNumber>& numbers ){
   }
 }
 
-void ReferenceAtoms::printAtoms( OFile& ofile ) const {
+void ReferenceAtoms::printAtoms( OFile& ofile, const double& lunits ) const {
   for(unsigned i=0;i<reference_atoms.size();++i){
-      ofile.printf("ATOM  %4d X    RES   %4u %8.3f %8.3f %8.3f %6.2f %6.2f\n",
+      ofile.printf("ATOM  %4d  X    RES  %4u  %8.3f%8.3f%8.3f%6.2f%6.2f\n",
         indices[i].serial(), i, 
-        reference_atoms[i][0], reference_atoms[i][1], reference_atoms[i][2],
+        lunits*reference_atoms[i][0], lunits*reference_atoms[i][1], lunits*reference_atoms[i][2],
         align[i], displace[i] );
   }
 }
diff --git a/src/reference/ReferenceAtoms.h b/src/reference/ReferenceAtoms.h
index 267c276a80ca2514f3cc732bc98864cebe5f60b0..08654483280ac63787e472fb0ade12a4412f8bf2 100644
--- a/src/reference/ReferenceAtoms.h
+++ b/src/reference/ReferenceAtoms.h
@@ -97,7 +97,7 @@ public:
 /// Set the positions of the reference atoms
   virtual void setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in )=0;
 /// Print the atomic positions
-  void printAtoms( OFile& ofile ) const ;
+  void printAtoms( OFile& ofile, const double& lunits ) const ;
 /// Return all atom indexes
   const std::vector<AtomNumber>& getAbsoluteIndexes();
 /// This returns how many atoms there should be
diff --git a/src/reference/ReferenceConfiguration.cpp b/src/reference/ReferenceConfiguration.cpp
index aa00fc028a765689dd48c26785bfb178ae4f638e..2c8b8de56427546e87751fa5d499a7f78a248dfd 100644
--- a/src/reference/ReferenceConfiguration.cpp
+++ b/src/reference/ReferenceConfiguration.cpp
@@ -156,16 +156,16 @@ double ReferenceConfiguration::calculate( const std::vector<Vector>& pos, const
 //   virialWasSet=ref->virialWasSet; virial=ref->virial;
 // }
 
-void ReferenceConfiguration::print( OFile& ofile, const double& time, const double& weight, const double& old_norm ){
+void ReferenceConfiguration::print( OFile& ofile, const double& time, const double& weight, const double& lunits, const double& old_norm ){
   ofile.printf("REMARK TIME=%f LOG_WEIGHT=%f OLD_NORM=%f\n",time, weight, old_norm );
-  print( ofile, "%f" );  // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE
+  print( ofile, "%f", lunits );  // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE
 }
 
-void ReferenceConfiguration::print( OFile& ofile, const std::string& fmt ){
+void ReferenceConfiguration::print( OFile& ofile, const std::string& fmt, const double& lunits ){
   ReferenceArguments* args=dynamic_cast<ReferenceArguments*>(this);
   if(args) args->printArguments( ofile, fmt );
   ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>(this);
-  if(atoms) atoms->printAtoms( ofile );
+  if(atoms) atoms->printAtoms( ofile, lunits );
   ofile.printf("END\n");
 }
 
diff --git a/src/reference/ReferenceConfiguration.h b/src/reference/ReferenceConfiguration.h
index 7338830661af9345d30541557310011359829dd5..59abad474538c7040b3645e9ba46d381bba433ad 100644
--- a/src/reference/ReferenceConfiguration.h
+++ b/src/reference/ReferenceConfiguration.h
@@ -144,8 +144,8 @@ public:
 /// Set the reference structure (perhaps should also pass the pbc and align and displace )
   void setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric );
 /// Print a pdb file containing the reference configuration
-  void print( OFile& ofile, const double& time, const double& weight, const double& old_norm );
-  void print( OFile& ofile, const std::string& fmt );
+  void print( OFile& ofile, const double& time, const double& weight, const double& lunits, const double& old_norm );
+  void print( OFile& ofile, const std::string& fmt, const double& lunits );
 /// Get one of the referene arguments
   virtual double getReferenceArgument( const unsigned& i ) const { plumed_error(); return 0.0; }
 /// These are overwritten in ReferenceArguments and ReferenceAtoms but are required here