Index: src/Parser/TremoloParser.cpp
===================================================================
--- src/Parser/TremoloParser.cpp	(revision 0e894a710866850bbbf70758ddd14e448206496b)
+++ src/Parser/TremoloParser.cpp	(revision 33af209eb302b7c1b15f28086473f9a986c03c97)
@@ -146,6 +146,6 @@
   size_t timestep = 0;
   atom *addedatom = NULL;
-  std::vector<atom *> addedatoms;
-  std::vector<atom *>::iterator atomiter = addedatoms.begin();
+  std::list<atom *> addedatoms;
+  std::list<atom *>::iterator atomiter = addedatoms.begin();
   while (file->good()) {
     std::getline(*file, line, '\n');
@@ -226,14 +226,21 @@
   distributeContinuousIds(AtomList);
 
-  // store atomdata
-  save_AtomDataLine(file);
-
-  // store box
-  save_BoxLine(file);
-
-  // store particles
-  for (std::vector<const atom*>::const_iterator  atomIt = AtomList.begin();
-      atomIt != AtomList.end(); ++atomIt)
-    saveLine(file, *atomIt);
+  std::pair<size_t, size_t> minmax_trajectories =
+      getMinMaxTrajectories(AtomList);
+  LOG(2, "INFO: There are " << minmax_trajectories.second << " steps to save.");
+
+  for (size_t step = 0; (step < minmax_trajectories.second) || (step == 0); ++step) {
+    // store atomdata
+    save_AtomDataLine(file);
+
+    // store box only on first step
+    if (step == 0)
+      save_BoxLine(file);
+
+    // store particles
+    for (std::vector<const atom*>::const_iterator  atomIt = AtomList.begin();
+        atomIt != AtomList.end(); ++atomIt)
+      saveLine(file, *atomIt, step);
+  }
 }
 
@@ -495,9 +502,11 @@
 void FormatParser< tremolo >::saveLine(
     std::ostream* file,
-    const atom * const currentAtom)
+    const atom * const currentAtom,
+    const size_t _timestep)
 {
   TremoloKey::atomDataKey currentField;
 
-  LOG(4, "INFO: Saving atom " << *currentAtom << ", its father id is " << currentAtom->GetTrueFather()->getId());
+  LOG(4, "INFO: Saving atom " << *currentAtom << ", its father id is "
+      << currentAtom->GetTrueFather()->getId() << " at time step " << _timestep);
 
   for (usedFields_t::iterator it = usedFields_save.begin(); it != usedFields_save.end(); it++) {
@@ -506,22 +515,22 @@
       case TremoloKey::x :
         // for the moment, assume there are always three dimensions
-        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getPosition());
-        *file << currentAtom->at(0) << "\t";
-        *file << currentAtom->at(1) << "\t";
-        *file << currentAtom->at(2) << "\t";
+        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getPositionAtStep(_timestep));
+        *file << currentAtom->atStep(0, _timestep) << "\t";
+        *file << currentAtom->atStep(1, _timestep) << "\t";
+        *file << currentAtom->atStep(2, _timestep) << "\t";
         break;
       case TremoloKey::u :
         // for the moment, assume there are always three dimensions
-        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getAtomicVelocity());
-        *file << currentAtom->getAtomicVelocity()[0] << "\t";
-        *file << currentAtom->getAtomicVelocity()[1] << "\t";
-        *file << currentAtom->getAtomicVelocity()[2] << "\t";
+        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getAtomicVelocityAtStep(_timestep));
+        *file << currentAtom->getAtomicVelocityAtStep(_timestep)[0] << "\t";
+        *file << currentAtom->getAtomicVelocityAtStep(_timestep)[1] << "\t";
+        *file << currentAtom->getAtomicVelocityAtStep(_timestep)[2] << "\t";
         break;
       case TremoloKey::F :
         // for the moment, assume there are always three dimensions
-        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getAtomicForce());
-        *file << currentAtom->getAtomicForce()[0] << "\t";
-        *file << currentAtom->getAtomicForce()[1] << "\t";
-        *file << currentAtom->getAtomicForce()[2] << "\t";
+        LOG(3, "Writing for type " << knownKeyNames[currentField] << ": " << currentAtom->getAtomicForceAtStep(_timestep));
+        *file << currentAtom->getAtomicForceAtStep(_timestep)[0] << "\t";
+        *file << currentAtom->getAtomicForceAtStep(_timestep)[1] << "\t";
+        *file << currentAtom->getAtomicForceAtStep(_timestep)[2] << "\t";
         break;
       case TremoloKey::type :
Index: src/Parser/TremoloParser.hpp
===================================================================
--- src/Parser/TremoloParser.hpp	(revision 0e894a710866850bbbf70758ddd14e448206496b)
+++ src/Parser/TremoloParser.hpp	(revision 33af209eb302b7c1b15f28086473f9a986c03c97)
@@ -94,5 +94,8 @@
   bool isUsedField(const usedFields_t &fields, const std::string &fieldName) const;
   void writeNeighbors(std::ostream* file, const int numberOfNeighbors, const atom* const currentAtom);
-  void saveLine(std::ostream* file, const atom* const currentAtom);
+  void saveLine(
+      std::ostream* file,
+      const atom* const currentAtom,
+      const size_t _timestep);
   void save_AtomDataLine(std::ostream* file) const;
   void save_BoxLine(std::ostream* file) const;
Index: tests/regression/Parser/Tremolo/testsuite-parser-tremolo-load-multiple-timesteps.at
===================================================================
--- tests/regression/Parser/Tremolo/testsuite-parser-tremolo-load-multiple-timesteps.at	(revision 0e894a710866850bbbf70758ddd14e448206496b)
+++ tests/regression/Parser/Tremolo/testsuite-parser-tremolo-load-multiple-timesteps.at	(revision 33af209eb302b7c1b15f28086473f9a986c03c97)
@@ -21,6 +21,4 @@
 AT_SETUP([Parser - loading tremolo file with multiple timesteps])
 AT_KEYWORDS([parser load tremolo timesteps])
-# ::save() does not yet support multiple time steps
-AT_XFAIL_IF([/bin/true])
 
 file=water_multipletimesteps.data
@@ -33,6 +31,4 @@
 AT_SETUP([Parser - loading tremolo file with multiple timesteps with Undo])
 AT_KEYWORDS([parser load tremolo timesteps undo])
-# with undo we don't notice missing save() implementation
-AT_XFAIL_IF([/bin/false])
 
 file=water_multipletimesteps.data
@@ -45,6 +41,4 @@
 AT_SETUP([Parser - loading tremolo file with multiple timesteps with Redo])
 AT_KEYWORDS([parser load tremolo redo])
-# ::save() does not yet support multiple time steps
-AT_XFAIL_IF([/bin/true])
 
 file=water_multipletimesteps.data
