Index: src/Atom/atom.cpp
===================================================================
--- src/Atom/atom.cpp	(revision 9f2071d6b2214e6e577572f57a887b64fd67e3fe)
+++ src/Atom/atom.cpp	(revision 7294dc91fb8b9c40a246789bb40db799345e8b50)
@@ -103,7 +103,7 @@
   LOG(4,"atom::UpdateStep() called.");
   // append to position, velocity and force vector
-  AtomInfo::AppendTrajectoryStep(WorldTime::getTime()+1);
+  AtomInfo::AppendTrajectoryStep(WorldTime::getTime());
   // append to ListOfBonds vector
-  BondedParticleInfo::AppendTrajectoryStep(WorldTime::getTime()+1);
+  BondedParticleInfo::AppendTrajectoryStep(WorldTime::getTime());
 }
 
Index: src/Atom/atom_atominfo.cpp
===================================================================
--- src/Atom/atom_atominfo.cpp	(revision 9f2071d6b2214e6e577572f57a887b64fd67e3fe)
+++ src/Atom/atom_atominfo.cpp	(revision 7294dc91fb8b9c40a246789bb40db799345e8b50)
@@ -91,6 +91,4 @@
 void AtomInfo::AppendTrajectoryStep(const unsigned int _step)
 {
-  ASSERT (WorldTime::getTime() != _step,
-      "AtomInfo::AppendTrajectoryStep() - cannot append current time step.");
   NOTIFY(TrajectoryChanged);
   AtomicPosition.insert( std::make_pair(_step, zeroVec) );
@@ -105,6 +103,4 @@
 void AtomInfo::removeTrajectoryStep(const unsigned int _step)
 {
-  ASSERT (WorldTime::getTime() != _step,
-      "AtomInfo::removeTrajectoryStep() - cannot remove current time step.");
   NOTIFY(TrajectoryChanged);
   AtomicPosition.erase(_step);
Index: src/Fragmentation/Exporters/HydrogenPool.cpp
===================================================================
--- src/Fragmentation/Exporters/HydrogenPool.cpp	(revision 9f2071d6b2214e6e577572f57a887b64fd67e3fe)
+++ src/Fragmentation/Exporters/HydrogenPool.cpp	(revision 7294dc91fb8b9c40a246789bb40db799345e8b50)
@@ -91,17 +91,8 @@
       +" from pool is already in use.");
   LOG(3, "DEBUG: Leasing " << *Walker << ".");
-  UpdateSteps(Walker);
   HydrogenInUse.insert( std::make_pair( Walker->getId(), Walker) );
   HydrogenQueue.pop_front();
 
   return Walker;
-}
-
-void HydrogenPool::UpdateSteps(atom * _atom) const
-{
-  // make sure we are up to current time step
-  const size_t CurrentTime = WorldTime::getTime();
-  for (size_t step = _atom->getTrajectorySize(); step <= CurrentTime; ++step)
-    _atom->UpdateStep(step);
 }
 
Index: src/Fragmentation/Exporters/HydrogenPool.hpp
===================================================================
--- src/Fragmentation/Exporters/HydrogenPool.hpp	(revision 9f2071d6b2214e6e577572f57a887b64fd67e3fe)
+++ src/Fragmentation/Exporters/HydrogenPool.hpp	(revision 7294dc91fb8b9c40a246789bb40db799345e8b50)
@@ -73,11 +73,4 @@
   void cleanup();
 
-  /** Helper function to make sure \a _atom is up to current time step.
-   *
-   * \param _atom atom to bring trajectory size up to speed
-   */
-  void UpdateSteps(atom * _atom) const;
-
-
 private:
   //!> typedef for the deque of available hydrogens.
Index: src/World.cpp
===================================================================
--- src/World.cpp	(revision 9f2071d6b2214e6e577572f57a887b64fd67e3fe)
+++ src/World.cpp	(revision 7294dc91fb8b9c40a246789bb40db799345e8b50)
@@ -221,5 +221,5 @@
 }
 
-bool areBondsPresent(const unsigned int _step)
+static bool areBondsPresent(const unsigned int _step)
 {
   bool status = false;
@@ -229,4 +229,17 @@
     const atom * const Walker = *iter;
     status |= !Walker->getListOfBondsAtStep(_step).empty();
+  }
+
+  return status;
+}
+
+static bool areAtomsPresent(const unsigned int _step)
+{
+  bool status = false;
+
+  for (World::AtomConstIterator iter = const_cast<const World &>(World::getInstance()).getAtomIter();
+      (!status) && (iter != const_cast<const World &>(World::getInstance()).atomEnd()); ++iter) {
+    const atom * const Walker = *iter;
+    status |= (Walker->getTrajectorySize() >= _step);
   }
 
@@ -259,15 +272,15 @@
 }
 
-static void copyAtoms(const unsigned int _srcstep, const unsigned int _deststep)
-{
-  for (World::AtomIterator iter = World::getInstance().getAtomIter();
-      iter != World::getInstance().atomEnd(); ++iter) {
-    atom * const Walker = *iter;
-    Walker->UpdateStep(_deststep);
-    Walker->setPositionAtStep(_deststep, Walker->getPositionAtStep(_srcstep));
-    Walker->setAtomicVelocityAtStep(_deststep, Walker->getAtomicVelocityAtStep(_srcstep));
-    Walker->setAtomicForceAtStep(_deststep, Walker->getAtomicForceAtStep(_srcstep));
-  }
-}
+//static void copyAtoms(const unsigned int _srcstep, const unsigned int _deststep)
+//{
+//  for (World::AtomIterator iter = World::getInstance().getAtomIter();
+//      iter != World::getInstance().atomEnd(); ++iter) {
+//    atom * const Walker = *iter;
+//    Walker->UpdateStep(_deststep);
+//    Walker->setPositionAtStep(_deststep, Walker->getPositionAtStep(_srcstep));
+//    Walker->setAtomicVelocityAtStep(_deststep, Walker->getAtomicVelocityAtStep(_srcstep));
+//    Walker->setAtomicForceAtStep(_deststep, Walker->getAtomicForceAtStep(_srcstep));
+//  }
+//}
 
 void World::setTime(const unsigned int _step)
@@ -276,5 +289,7 @@
     const unsigned int oldstep = WorldTime::getTime();
 
-    copyAtoms(oldstep, _step);
+//    if (!areAtomsPresent(_step))
+//      copyAtoms(oldstep, _step);
+
     // 1. copy bond graph (such not each addBond causes GUI update)
     if (!areBondsPresent(_step)) {
