Index: src/Actions/MoleculeAction/ForceAnnealingAction.cpp
===================================================================
--- src/Actions/MoleculeAction/ForceAnnealingAction.cpp	(revision 08470b89abb337aa115b2b613212d96215a9d384)
+++ src/Actions/MoleculeAction/ForceAnnealingAction.cpp	(revision 9f1fee58bd77ce92a750000ec747d1de7d3551b9)
@@ -120,5 +120,5 @@
   // perform optimization step
   LOG(1, "Structural optimization.");
-  optimizer(CurrentStep-1, 1, params.UseBondGraph.get());
+  optimizer(CurrentStep, 1, params.UseBondGraph.get());
   STATUS("Successfully optimized structure by one step.");
 
Index: src/Dynamics/ForceAnnealing.hpp
===================================================================
--- src/Dynamics/ForceAnnealing.hpp	(revision 08470b89abb337aa115b2b613212d96215a9d384)
+++ src/Dynamics/ForceAnnealing.hpp	(revision 9f1fee58bd77ce92a750000ec747d1de7d3551b9)
@@ -92,17 +92,21 @@
    *
    *
-   * \param CurrentTimeStep current time step (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
+   * \param _TimeStep time step to update (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
    * \param offset offset in matrix file to the first force component
    * \todo This is not yet checked if it is correctly working with DoConstrainedMD set >0.
    */
   void operator()(
-      const int _CurrentTimeStep,
+      const int _TimeStep,
       const size_t _offset,
       const bool _UseBondgraph)
   {
+    const int CurrentTimeStep = _TimeStep-1;
+    ASSERT( CurrentTimeStep >= 0,
+        "ForceAnnealing::operator() - a new time step (upon which we work) must already have been copied.");
+
     // make sum of forces equal zero
     AtomicForceManipulator<T>::correctForceMatrixForFixedCenterOfMass(
         _offset,
-        _CurrentTimeStep-1>=0 ? _CurrentTimeStep - 1 : 0);
+        CurrentTimeStep);
 
     // are we in initial step? Then set static entities
@@ -114,5 +118,5 @@
 
       // always use atomic annealing on first step
-      maxComponents = anneal(_CurrentTimeStep);
+      maxComponents = anneal(_TimeStep);
     } else {
       ++currentStep;
@@ -121,8 +125,8 @@
       // bond graph annealing is always followed by a normal annealing
       if (_UseBondgraph)
-        maxComponents = annealWithBondGraph(_CurrentTimeStep);
+        maxComponents = annealWithBondGraph_BarzilaiBorwein(_TimeStep);
       // cannot store RemnantGradient in Atom's Force as it ruins BB stepwidth calculation
       else
-        maxComponents = anneal(_CurrentTimeStep);
+        maxComponents = anneal_BarzilaiBorwein(_TimeStep);
     }
 
@@ -163,10 +167,16 @@
    * We assume that forces have just been calculated.
    *
-   * \param CurrentTimeStep current time step (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
+   * \param _TimeStep time step to update (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
    * \return to be filled with maximum force component over all atoms
    */
   Vector anneal(
-      const int CurrentTimeStep)
+      const int _TimeStep)
   {
+    const int CurrentTimeStep = _TimeStep-1;
+    ASSERT( CurrentTimeStep >= 0,
+        "ForceAnnealing::anneal() - a new time step (upon which we work) must already have been copied.");
+
+    LOG(1, "STATUS: performing simple anneal with default stepwidth " << currentDeltat << " at step #" << currentStep);
+
     Vector maxComponents;
     bool deltat_decreased = false;
@@ -174,17 +184,12 @@
         iter != AtomicForceManipulator<T>::atoms.end(); ++iter) {
       // atom's force vector gives steepest descent direction
-      const Vector oldPosition = (*iter)->getPositionAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
       const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep);
-      const Vector oldGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep-1 >= 0 ? CurrentTimeStep - 1 : 0);
       const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep);
-      LOG(4, "DEBUG: oldPosition for atom " << **iter << " is " << oldPosition);
-      LOG(4, "DEBUG: currentPosition for atom " << **iter << " is " << currentPosition);
-      LOG(4, "DEBUG: oldGradient for atom " << **iter << " is " << oldGradient);
-      LOG(4, "DEBUG: currentGradient for atom " << **iter << " is " << currentGradient);
+      LOG(4, "DEBUG: currentPosition for atom #" << (*iter)->getId() << " is " << currentPosition);
+      LOG(4, "DEBUG: currentGradient for atom #" << (*iter)->getId() << " is " << currentGradient);
 //      LOG(4, "DEBUG: Force for atom " << **iter << " is " << currentGradient);
 
       // we use Barzilai-Borwein update with position reversed to get descent
-      const double stepwidth = getBarzilaiBorweinStepwidth(
-          currentPosition - oldPosition, currentGradient - oldGradient);
+      double stepwidth = currentDeltat;
       Vector PositionUpdate = stepwidth * currentGradient;
       LOG(3, "DEBUG: Update would be " << stepwidth << "*" << currentGradient << " = " << PositionUpdate);
@@ -197,6 +202,13 @@
       // have different sign: Check whether this is the case and one step with
       // deltat to interrupt this sequence
-      const Vector PositionDifference = currentPosition - oldPosition;
-      if ((currentStep > 1) && (!PositionDifference.IsZero()))
+      if (currentStep > 1) {
+        const int OldTimeStep = CurrentTimeStep-1;
+        ASSERT( OldTimeStep >= 0,
+            "ForceAnnealing::anneal() - if currentStep is "+toString(currentStep)
+            +", then there should be at least three time steps.");
+        const Vector oldPosition = (*iter)->getPositionAtStep(OldTimeStep);
+        const Vector PositionDifference = currentPosition - oldPosition;
+        LOG(4, "DEBUG: oldPosition for atom #" << (*iter)->getId() << " is " << oldPosition);
+        LOG(4, "DEBUG: PositionDifference for atom #" << (*iter)->getId() << " is " << PositionDifference);
         if ((PositionUpdate.ScalarProduct(PositionDifference) < 0)
             && (fabs(PositionUpdate.NormSquared()-PositionDifference.NormSquared()) < 1e-3)) {
@@ -210,8 +222,81 @@
               << ", using deltat: " << currentDeltat);
           PositionUpdate = currentDeltat * currentGradient;
+        }
       }
 
       // finally set new values
-      (*iter)->setPosition(currentPosition + PositionUpdate);
+      (*iter)->setPositionAtStep(_TimeStep, currentPosition + PositionUpdate);
+    }
+
+    return maxComponents;
+  }
+
+  /** Performs Gradient optimization on the atoms using BarzilaiBorwein step width.
+   *
+   * \note this can only be called when there are at least two optimization
+   * time steps present, i.e. this must be preceeded by a simple anneal().
+   *
+   * We assume that forces have just been calculated.
+   *
+   * \param _TimeStep time step to update (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
+   * \return to be filled with maximum force component over all atoms
+   */
+  Vector anneal_BarzilaiBorwein(
+      const int _TimeStep)
+  {
+    const int OldTimeStep = _TimeStep-2;
+    const int CurrentTimeStep = _TimeStep-1;
+    ASSERT( OldTimeStep >= 0,
+        "ForceAnnealing::anneal_BarzilaiBorwein() - we need two present optimization steps to compute stepwidth.");
+    ASSERT(currentStep > 1,
+        "ForceAnnealing::anneal_BarzilaiBorwein() - we need two present optimization steps to compute stepwidth.");
+
+    LOG(1, "STATUS: performing BarzilaiBorwein anneal at step #" << currentStep);
+
+    Vector maxComponents;
+    bool deltat_decreased = false;
+    for(typename AtomSetMixin<T>::iterator iter = AtomicForceManipulator<T>::atoms.begin();
+        iter != AtomicForceManipulator<T>::atoms.end(); ++iter) {
+      // atom's force vector gives steepest descent direction
+      const Vector oldPosition = (*iter)->getPositionAtStep(OldTimeStep);
+      const Vector currentPosition = (*iter)->getPositionAtStep(CurrentTimeStep);
+      const Vector oldGradient = (*iter)->getAtomicForceAtStep(OldTimeStep);
+      const Vector currentGradient = (*iter)->getAtomicForceAtStep(CurrentTimeStep);
+      LOG(4, "DEBUG: oldPosition for atom #" << (*iter)->getId() << " is " << oldPosition);
+      LOG(4, "DEBUG: currentPosition for atom #" << (*iter)->getId() << " is " << currentPosition);
+      LOG(4, "DEBUG: oldGradient for atom #" << (*iter)->getId() << " is " << oldGradient);
+      LOG(4, "DEBUG: currentGradient for atom #" << (*iter)->getId() << " is " << currentGradient);
+//      LOG(4, "DEBUG: Force for atom #" << (*iter)->getId() << " is " << currentGradient);
+
+      // we use Barzilai-Borwein update with position reversed to get descent
+      const Vector PositionDifference = currentPosition - oldPosition;
+      const Vector GradientDifference = (currentGradient - oldGradient);
+      double stepwidth = getBarzilaiBorweinStepwidth(PositionDifference, GradientDifference);
+      Vector PositionUpdate = stepwidth * currentGradient;
+      LOG(3, "DEBUG: Update would be " << stepwidth << "*" << currentGradient << " = " << PositionUpdate);
+
+      // extract largest components for showing progress of annealing
+      for(size_t i=0;i<NDIM;++i)
+        maxComponents[i] = std::max(maxComponents[i], fabs(currentGradient[i]));
+
+//      // steps may go back and forth again (updates are of same magnitude but
+//      // have different sign: Check whether this is the case and one step with
+//      // deltat to interrupt this sequence
+//      if (!PositionDifference.IsZero())
+//        if ((PositionUpdate.ScalarProduct(PositionDifference) < 0)
+//            && (fabs(PositionUpdate.NormSquared()-PositionDifference.NormSquared()) < 1e-3)) {
+//          // for convergence we want a null sequence here, too
+//          if (!deltat_decreased) {
+//            deltat_decreased = true;
+//            currentDeltat = .5*currentDeltat;
+//          }
+//          LOG(2, "DEBUG: Upgrade in other direction: " << PositionUpdate
+//              << " > " << PositionDifference
+//              << ", using deltat: " << currentDeltat);
+//          PositionUpdate = currentDeltat * currentGradient;
+//      }
+
+      // finally set new values
+      (*iter)->setPositionAtStep(_TimeStep, currentPosition + PositionUpdate);
     }
 
@@ -256,5 +341,8 @@
   }
 
-  /** Performs Gradient optimization on the bonds.
+  /** Performs Gradient optimization on the bonds with BarzilaiBorwein stepwdith.
+   *
+   * \note this can only be called when there are at least two optimization
+   * time steps present, i.e. this must be preceeded by a simple anneal().
    *
    * We assume that forces have just been calculated. These forces are projected
@@ -263,10 +351,19 @@
    *
    *
-   * \param CurrentTimeStep current time step (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
+   * \param _TimeStep time step to update (i.e. \f$ t + \Delta t \f$ in the sense of the velocity verlet)
    * \param maxComponents to be filled with maximum force component over all atoms
    */
-  Vector annealWithBondGraph(
-      const int CurrentTimeStep)
+  Vector annealWithBondGraph_BarzilaiBorwein(
+      const int _TimeStep)
   {
+    const int OldTimeStep = _TimeStep-2;
+    const int CurrentTimeStep = _TimeStep-1;
+    ASSERT(OldTimeStep >= 0,
+        "annealWithBondGraph_BarzilaiBorwein() - we need two present optimization steps to compute stepwidth, and the new one to update on already present.");
+    ASSERT(currentStep > 1,
+        "annealWithBondGraph_BarzilaiBorwein() - we need two present optimization steps to compute stepwidth.");
+
+    LOG(1, "STATUS: performing BarzilaiBorwein anneal on bonds at step #" << currentStep);
+
     Vector maxComponents;
 
@@ -309,5 +406,5 @@
         AtomicForceManipulator<T>::atoms.begin(),
         AtomicForceManipulator<T>::atoms.end(),
-        CurrentTimeStep);
+        _TimeStep); // use time step to update here as this is the current set of bonds
     const BondVectors::container_t &sorted_bonds = bv.getSorted();
 
@@ -328,13 +425,13 @@
     RemnantGradient_per_atom_t RemnantGradient_per_atom;
     for (size_t timestep = 0; timestep <= 1; ++timestep) {
-      const size_t CurrentStep = CurrentTimeStep-timestep-1 >= 0 ? CurrentTimeStep-timestep-1 : 0;
-      LOG(2, "DEBUG: CurrentTimeStep is " << CurrentTimeStep
+      const size_t ReferenceTimeStep = CurrentTimeStep-timestep;
+      LOG(2, "DEBUG: given time step is " << _TimeStep
           << ", timestep is " << timestep
-          << ", and CurrentStep is " << CurrentStep);
+          << ", and ReferenceTimeStep is " << ReferenceTimeStep);
 
       for(typename AtomSetMixin<T>::const_iterator iter = AtomicForceManipulator<T>::atoms.begin();
           iter != AtomicForceManipulator<T>::atoms.end(); ++iter) {
         const atom &walker = *(*iter);
-        const Vector &walkerGradient = walker.getAtomicForceAtStep(CurrentStep);
+        const Vector &walkerGradient = walker.getAtomicForceAtStep(ReferenceTimeStep);
         LOG(3, "DEBUG: Gradient of atom #" << walker.getId() << ", namely "
             << walker << " is " << walkerGradient << " with magnitude of "
@@ -346,5 +443,5 @@
           // gather subset of BondVectors for the current atom
           const std::vector<Vector> BondVectors =
-              bv.getAtomsBondVectorsAtStep(walker, CurrentStep);
+              bv.getAtomsBondVectorsAtStep(walker, ReferenceTimeStep);
 
           // go through all its bonds and calculate what magnitude is represented
@@ -353,5 +450,5 @@
               weights_per_atom[timestep].insert(
                   std::make_pair(walker.getId(),
-                  bv.getWeightsForAtomAtStep(walker, BondVectors, CurrentStep)) );
+                  bv.getWeightsForAtomAtStep(walker, BondVectors, ReferenceTimeStep)) );
           ASSERT( inserter.second,
               "ForceAnnealing::operator() - weight map for atom "+toString(walker)
@@ -441,6 +538,6 @@
         LOG(4, "DEBUG: current projected gradient for "
             << (side == leftside ? "left" : "right") << " side of bond is " << currentGradient);
-        const Vector &oldPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep-2 >= 0 ? CurrentTimeStep - 2 : 0);
-        const Vector &currentPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0);
+        const Vector &oldPosition = bondatom[side]->getPositionAtStep(OldTimeStep);
+        const Vector &currentPosition = bondatom[side]->getPositionAtStep(CurrentTimeStep);
         const Vector PositionDifference = currentPosition - oldPosition;
         LOG(4, "DEBUG: old position is " << oldPosition);
@@ -491,11 +588,7 @@
       atom &walker = *(*iter);
       // extract largest components for showing progress of annealing
-      const Vector currentGradient = walker.getAtomicForceAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep-1 : 0);
+      const Vector currentGradient = walker.getAtomicForceAtStep(CurrentTimeStep);
       for(size_t i=0;i<NDIM;++i)
         maxComponents[i] = std::max(maxComponents[i], fabs(currentGradient[i]));
-
-      // reset force vector for next step except on final one
-      if (currentStep != maxSteps)
-        walker.setAtomicForce(zeroVec);
     }
 
@@ -521,8 +614,7 @@
       LOG(3, "DEBUG: Applying update " << update << " to atom #" << atomid
           << ", namely " << *walker);
-      walker->setPosition(
-          walker->getPositionAtStep(CurrentTimeStep-1>=0 ? CurrentTimeStep - 1 : 0)
+      walker->setPositionAtStep(_TimeStep,
+          walker->getPositionAtStep(CurrentTimeStep)
           + update - CommonTranslation);
-      walker->setAtomicVelocity(update);
 //      walker->setAtomicForce( RemnantGradient_per_atom[walker->getId()] );
     }
Index: tests/Python/ForceAnnealing/post/five_carbon_test_no-bondgraph.data
===================================================================
--- tests/Python/ForceAnnealing/post/five_carbon_test_no-bondgraph.data	(revision 08470b89abb337aa115b2b613212d96215a9d384)
+++ tests/Python/ForceAnnealing/post/five_carbon_test_no-bondgraph.data	(revision 9f1fee58bd77ce92a750000ec747d1de7d3551b9)
@@ -31,67 +31,67 @@
 C	5	12.3868	10	10	0	0	0	0.0975274	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.99167	10	10	0	0	0	-0.0302901	0	0	2	0	0	0	
-C	2	7.53443	10	10	0	0	0	0.0621625	0	0	1	3	0	0	
+C	1	5.99318	10	10	0	0	0	-0.0310892	0	0	2	0	0	0	
+C	2	7.53443	10	10	0	0	0	0.0629615	0	0	1	3	0	0	
 C	3	9.19466	10	10	0	0	0	-0.0637606	0	0	2	4	0	0	
-C	4	10.7344	10	10	0	0	0	0.0622101	0	0	3	5	0	0	
-C	5	12.3917	10	10	0	0	0	-0.0303219	0	0	4	0	0	0	
+C	4	10.7344	10	10	0	0	0	0.0630038	0	0	3	5	0	0	
+C	5	12.3932	10	10	0	0	0	-0.0311156	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.99092	10	10	0	0	0	-0.00303219	0	0	2	0	0	0	
-C	2	7.58519	10	10	0	0	0	0.000820225	0	0	1	3	0	0	
-C	3	9.18101	10	10	0	0	0	0.00442921	0	0	2	4	0	0	
-C	4	10.7852	10	10	0	0	0	0.000799058	0	0	3	5	0	0	
-C	5	12.3909	10	10	0	0	0	-0.00301631	0	0	4	0	0	0	
+C	1	5.99164	10	10	0	0	0	-0.00314331	0	0	2	0	0	0	
+C	2	7.5857	10	10	0	0	0	0.000661472	0	0	1	3	0	0	
+C	3	9.18101	10	10	0	0	0	0.00496368	0	0	2	4	0	0	
+C	4	10.7857	10	10	0	0	0	0.000640304	0	0	3	5	0	0	
+C	5	12.3916	10	10	0	0	0	-0.00312215	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.99083	10	10	0	0	0	-0.00263001	0	0	2	0	0	0	
-C	2	7.58586	10	10	0	0	0	8.99601e-05	0	0	1	3	0	0	
-C	3	9.18106	10	10	0	0	0	0.00510127	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	3.17506e-05	0	0	3	5	0	0	
-C	5	12.3908	10	10	0	0	0	-0.00259297	0	0	4	0	0	0	
+C	1	5.99146	10	10	0	0	0	-0.00276231	0	0	2	0	0	0	
+C	2	7.58624	10	10	0	0	0	0.000513302	0	0	1	3	0	0	
+C	3	9.18199	10	10	0	0	0	0.00447684	0	0	2	4	0	0	
+C	4	10.7862	10	10	0	0	0	0.000576803	0	0	3	5	0	0	
+C	5	12.3915	10	10	0	0	0	-0.00280464	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.99028	10	10	0	0	0	-0.00229134	0	0	2	0	0	0	
-C	2	7.58595	10	10	0	0	0	-7.40848e-05	0	0	1	3	0	0	
-C	3	9.18148	10	10	0	0	0	0.00470439	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	-1.05835e-05	0	0	3	5	0	0	
-C	5	12.3903	10	10	0	0	0	-0.00232838	0	0	4	0	0	0	
+C	1	5.99021	10	10	0	0	0	-0.00110069	0	0	2	0	0	0	
+C	2	7.58813	10	10	0	0	0	0.00265118	0	0	1	3	0	0	
+C	3	9.19106	10	10	0	0	0	-0.00158224	0	0	2	4	0	0	
+C	4	10.791	10	10	0	0	0	-0.000497427	0	0	3	5	0	0	
+C	5	12.39	10	10	0	0	0	0.000529177	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98655	10	10	0	0	0	-0.000317506	0	0	2	0	0	0	
-C	2	7.58595	10	10	0	0	0	0.000587387	0	0	1	3	0	0	
-C	3	9.18646	10	10	0	0	0	-0.00056622	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000243422	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98937	10	10	0	0	0	0.000582095	0	0	2	0	0	0	
+C	2	7.59047	10	10	0	0	0	-0.00152403	0	0	1	3	0	0	
+C	3	9.18869	10	10	0	0	0	0.00100015	0	0	2	4	0	0	
+C	4	10.7888	10	10	0	0	0	0.000682639	0	0	3	5	0	0	
+C	5	12.3902	10	10	0	0	0	-0.000740848	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98596	10	10	0	0	0	-5.29177e-06	0	0	2	0	0	0	
-C	2	7.58595	10	10	0	0	0	0.000275172	0	0	1	3	0	0	
-C	3	9.18646	10	10	0	0	0	-0.00056622	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000243422	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98966	10	10	0	0	0	-2.64589e-05	0	0	2	0	0	0	
+C	2	7.58961	10	10	0	0	0	2.64589e-05	0	0	1	3	0	0	
+C	3	9.18961	10	10	0	0	0	0.000259297	0	0	2	4	0	0	
+C	4	10.7901	10	10	0	0	0	-0.000259297	0	0	3	5	0	0	
+C	5	12.3901	10	10	0	0	0	0	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98595	10	10	0	0	0	-9.48677e-21	0	0	2	0	0	0	
-C	2	7.58595	10	10	0	0	0	0.00026988	0	0	1	3	0	0	
-C	3	9.18646	10	10	0	0	0	-0.00056622	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000243422	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98965	10	10	0	0	0	-1.05835e-05	0	0	2	0	0	0	
+C	2	7.58963	10	10	0	0	0	0.000169337	0	0	1	3	0	0	
+C	3	9.18993	10	10	0	0	0	-0.000280464	0	0	2	4	0	0	
+C	4	10.7897	10	10	0	0	0	0.000333382	0	0	3	5	0	0	
+C	5	12.3901	10	10	0	0	0	-0.000211671	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98595	10	10	0	0	0	4.23342e-05	0	0	2	0	0	0	
-C	2	7.58603	10	10	0	0	0	0.000185212	0	0	1	3	0	0	
-C	3	9.18646	10	10	0	0	0	-0.000523885	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000243422	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98964	10	10	0	0	0	1.35525e-21	0	0	2	0	0	0	
+C	2	7.58964	10	10	0	0	0	6.35013e-05	0	0	1	3	0	0	
+C	3	9.18976	10	10	0	0	0	1.05835e-05	0	0	2	4	0	0	
+C	4	10.7899	10	10	0	0	0	-2.11671e-05	0	0	3	5	0	0	
+C	5	12.39	10	10	0	0	0	-5.29177e-05	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98595	10	10	0	0	0	0.000137586	0	0	2	0	0	0	
-C	2	7.58621	10	10	0	0	0	-1.58753e-05	0	0	1	3	0	0	
-C	3	9.18644	10	10	0	0	0	-0.000407466	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000232838	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98964	10	10	0	0	0	5.29177e-06	0	0	2	0	0	0	
+C	2	7.58965	10	10	0	0	0	5.82095e-05	0	0	1	3	0	0	
+C	3	9.18977	10	10	0	0	0	5.29177e-06	0	0	2	4	0	0	
+C	4	10.7899	10	10	0	0	0	-1.58753e-05	0	0	3	5	0	0	
+C	5	12.39	10	10	0	0	0	-5.29177e-05	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98595	10	10	0	0	0	0.000137586	0	0	2	0	0	0	
-C	2	7.58621	10	10	0	0	0	-5.82095e-05	0	0	1	3	0	0	
-C	3	9.18636	10	10	0	0	0	-0.000322798	0	0	2	4	0	0	
-C	4	10.7859	10	10	0	0	0	0.000190504	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	5.29177e-05	0	0	4	0	0	0	
+C	1	5.98964	10	10	0	0	0	6.8793e-05	0	0	2	0	0	0	
+C	2	7.58977	10	10	0	0	0	-6.8793e-05	0	0	1	3	0	0	
+C	3	9.18977	10	10	0	0	0	6.8793e-05	0	0	2	4	0	0	
+C	4	10.7899	10	10	0	0	0	-1.58753e-05	0	0	3	5	0	0	
+C	5	12.39	10	10	0	0	0	-5.29177e-05	0	0	4	0	0	0	
 # ATOMDATA	type	Id	x=3	u=3	F=3	neighbors=4
-C	1	5.98595	10	10	0	0	0	0	0	0	2	0	0	0	
-C	2	7.58621	10	10	0	0	0	0	0	0	1	3	0	0	
-C	3	9.18607	10	10	0	0	0	0	0	0	2	4	0	0	
-C	4	10.786	10	10	0	0	0	0	0	0	3	5	0	0	
-C	5	12.3858	10	10	0	0	0	0	0	0	4	0	0	0	
+C	1	5.98964	10	10	0	0	0	0	0	0	2	0	0	0	
+C	2	7.58971	10	10	0	0	0	0	0	0	1	3	0	0	
+C	3	9.18978	10	10	0	0	0	0	0	0	2	4	0	0	
+C	4	10.7899	10	10	0	0	0	0	0	0	3	5	0	0	
+C	5	12.39	10	10	0	0	0	0	0	0	4	0	0	0	
Index: tests/Python/ForceAnnealing/testsuite-python-forceannealing-ising.at
===================================================================
--- tests/Python/ForceAnnealing/testsuite-python-forceannealing-ising.at	(revision 08470b89abb337aa115b2b613212d96215a9d384)
+++ tests/Python/ForceAnnealing/testsuite-python-forceannealing-ising.at	(revision 9f1fee58bd77ce92a750000ec747d1de7d3551b9)
@@ -32,5 +32,4 @@
 AT_SETUP([Python externalization - Force Annealing without bondgraph on 5-body Ising model])
 AT_KEYWORDS([python force-annealing ising])
-AT_XFAIL_IF([/bin/true])
 
 # we use forces from a simple Ising model with 5 "carbon" atoms in a row along the x axis
@@ -38,5 +37,5 @@
 file=five_carbon_test.data
 AT_CHECK([../../run ${abs_top_srcdir}/tests/Python/ForceAnnealing/pre/ising_model_chain.py ./$file ./ 15 5 "0"], 0, [stdout], [ignore])
-AT_CHECK([grep "Largest remaining force components.*0.0001" stdout], 0, [ignore], [ignore])
+AT_CHECK([grep "Largest remaining force components.*e-05" stdout], 0, [ignore], [ignore])
 AT_CHECK([diff $file ${abs_top_srcdir}/tests/Python/ForceAnnealing/post/five_carbon_test_no-bondgraph.data], 0, [ignore], [ignore])
 
@@ -45,5 +44,4 @@
 AT_SETUP([Python externalization - Force Annealing with bondgraph on 2-body Ising model])
 AT_KEYWORDS([python force-annealing ising bondgraph])
-AT_XFAIL_IF([/bin/true])
 
 # we use forces from a simple Ising model with 2 "carbon" atoms in a row along the x axis
@@ -58,5 +56,4 @@
 AT_SETUP([Python externalization - Force Annealing with bondgraph on 5-body Ising model])
 AT_KEYWORDS([python force-annealing ising bondgraph])
-AT_XFAIL_IF([/bin/true])
 
 # we use forces from a simple Ising model with 5 "carbon" atoms in a row along the x axis
