Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision ec5d0cafc08b094a6b6c0df8e0c0179cd7cd4bf0)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision e5ebafc2d28549321aedb27389ec259195288019)
@@ -41,4 +41,5 @@
 #include "CodePatterns/MemDebug.hpp"
 
+#include <boost/foreach.hpp>
 #include <boost/mpl/remove.hpp>
 
@@ -58,4 +59,5 @@
 #endif
 
+#include "Descriptors/AtomIdDescriptor.hpp"
 #include "Fragmentation/Summation/Containers/FragmentationChargeDensity.hpp"
 #include "Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp"
@@ -79,4 +81,5 @@
 #include "Fragmentation/Summation/Containers/VMGData_printKeyNames.hpp"
 #endif
+#include "Helpers/defs.hpp"
 #include "World.hpp"
 
@@ -248,4 +251,5 @@
   IndexSetContainer::Container_t::const_iterator iter = Indices.begin();
   IndexSetContainer::Container_t::const_iterator forceiter = ForceIndices.begin();
+
   /// go through all fragments
   for (;iter != Indices.end(); ++iter, ++forceiter) // go through each IndexSet
@@ -338,4 +342,5 @@
   const KeySetsContainer &forcekeysets = container.getForceKeySets();
   const bool DoLongrange = container.areFullRangeResultsPresent();
+  const bool IsAngstroem = true;
 
   if (keysets.KeySets.empty()) {
@@ -347,4 +352,33 @@
   shortrangeresults(shortrangedata);
   printReceivedShortResults(shortrangeresults);
+
+  // adding obtained forces
+  if ( World::getInstance().getAllAtoms().size() != 0) {
+    const IndexedVectors::indexedvectors_t forces =
+        boost::fusion::at_key<MPQCDataFused::forces>(
+            shortrangeresults.Result_Force_fused.back()
+            ).getVectors();
+        ;
+    for(IndexedVectors::indexedvectors_t::const_iterator iter = forces.begin();
+        iter != forces.end(); ++iter) {
+      const IndexedVectors::index_t &index = iter->first;
+      const IndexedVectors::vector_t &forcevector = iter->second;
+      ASSERT( forcevector.size() == NDIM,
+          "printReceivedShortResults() - obtained force vector has incorrect dimension.");
+      // note that mpqc calculates a gradient, hence force pointing into opposite direction
+      // we have to mind different units here: MPQC has a_o, while we may have angstroem
+      Vector ForceVector(-forcevector[0], -forcevector[1], -forcevector[2]);
+      if (IsAngstroem)
+        for (size_t i=0;i<NDIM;++i)
+          ForceVector[i] *= AtomicLengthToAngstroem;
+      atom *_atom = World::getInstance().getAtom(AtomById(index));
+      if(_atom != NULL)
+        _atom->setAtomicForce(_atom->getAtomicForce() + ForceVector);
+      else
+        ELOG(2, "Could not find atom to id " << index << ".");
+    }
+  } else {
+    LOG(1, "INFO: Full molecule not loaded, hence will not add forces to atoms.");
+  }
 
 #ifdef HAVE_VMG
Index: src/Fragmentation/Summation/SetValues/IndexedVectors.hpp
===================================================================
--- src/Fragmentation/Summation/SetValues/IndexedVectors.hpp	(revision ec5d0cafc08b094a6b6c0df8e0c0179cd7cd4bf0)
+++ src/Fragmentation/Summation/SetValues/IndexedVectors.hpp	(revision e5ebafc2d28549321aedb27389ec259195288019)
@@ -95,4 +95,11 @@
   }
 
+  /** Const getter to index vectors.
+   *
+   * \return const reference to indexed vectors
+   */
+  const indexedvectors_t& getVectors() const
+  { return vectors; }
+
 private:
   /** Helper function that contains all the logic of how to superpose two
Index: tests/regression/Fragmentation/AnalyseFragmentationResults/post/alkane-3.data
===================================================================
--- tests/regression/Fragmentation/AnalyseFragmentationResults/post/alkane-3.data	(revision e5ebafc2d28549321aedb27389ec259195288019)
+++ tests/regression/Fragmentation/AnalyseFragmentationResults/post/alkane-3.data	(revision e5ebafc2d28549321aedb27389ec259195288019)
@@ -0,0 +1,22 @@
+# ATOMDATA	Id	type	x=3	u=3	F=3
+# Box	20	0	0	0	20	0	0	0	20
+1	C	5.89	6.513	5.89	0	0	0	-0.00161434	-0.00490854	-1.10408e-13	
+2	C	7.139	5.63	5.89	0	0	0	-0.00299896	0.00787442	-1.511e-13	
+3	H	5.89	7.142	5	0	0	0	-0.00213528	-0.000289904	0.00251064	
+4	H	5.89	7.142	6.78	0	0	0	-0.00213528	-0.000289904	-0.00251064	
+5	H	7.139	5	5	0	0	0	0.000254991	-0.000726836	0.00279816	
+6	H	7.139	5	6.78	0	0	0	0.000254991	-0.000726836	-0.00279816	
+7	C	8.388	6.513	5.89	0	0	0	-0.000234367	-0.0118817	-1.6438e-13	
+8	C	9.638	5.63	5.89	0	0	0	0.000234232	0.0115391	-1.55545e-13	
+9	H	8.388	7.142	5	0	0	0	-5.97387e-05	0.000821868	0.00242643	
+10	H	8.388	7.142	6.78	0	0	0	-5.97387e-05	0.000821868	-0.00242643	
+11	H	9.638	5	5	0	0	0	5.95858e-05	-0.000650729	0.00254668	
+12	H	9.638	5	6.78	0	0	0	5.95858e-05	-0.000650729	-0.00254668	
+13	C	10.887	6.513	5.89	0	0	0	0.00299486	-0.00822198	-1.35631e-13	
+14	C	12.136	5.63	5.89	0	0	0	0.0016146	0.00459057	-1.39543e-13	
+15	H	10.887	7.142	5	0	0	0	-0.00025431	0.000898036	0.00267787	
+16	H	10.887	7.142	6.78	0	0	0	-0.00025431	0.000898036	-0.00267787	
+17	H	12.136	5	5	0	0	0	0.00213567	0.000462277	0.00263267	
+18	H	12.136	5	6.78	0	0	0	0.00213567	0.000462277	-0.00263267	
+19	H	5	5.884	5.89	0	0	0	-0.000456201	0.00402573	-1.54302e-15	
+20	H	13.026	6.259	5.89	0	0	0	0.00045834	-0.00404705	-6.30882e-16	
Index: tests/regression/Fragmentation/AnalyseFragmentationResults/testsuite-fragmentation-analyse-fragment-results.at
===================================================================
--- tests/regression/Fragmentation/AnalyseFragmentationResults/testsuite-fragmentation-analyse-fragment-results.at	(revision ec5d0cafc08b094a6b6c0df8e0c0179cd7cd4bf0)
+++ tests/regression/Fragmentation/AnalyseFragmentationResults/testsuite-fragmentation-analyse-fragment-results.at	(revision e5ebafc2d28549321aedb27389ec259195288019)
@@ -37,4 +37,15 @@
 AT_CLEANUP
 
+AT_SETUP([Fragmentation - Analyse short-range fragmentation results with forces])
+AT_KEYWORDS([fragmentation analyse-fragment-results forces])
+
+file=BondFragmentShortRangeResults.dat
+AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/pre/$file $file], 0)
+AT_CHECK([chmod u+w $file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/pre/alkane-3.pdb -o tremolo --set-tremolo-atomdata "Id type x=3 u=3 F=3" --reset 1 --analyse-fragment-results --fragment-resultfile $file], 0, [ignore], [ignore])
+AT_CHECK([diff alkane-3.data ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/post/alkane-3.data], 0, [ignore], [ignore])
+
+AT_CLEANUP
+
 #
 # BondFragmentLongRangeResults.dat is created like this:
@@ -47,5 +58,6 @@
 AT_CHECK([/bin/cp -f ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/pre/$file $file], 0)
 AT_CHECK([chmod u+w $file], 0, [ignore], [ignore])
-AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/pre/alkane-3.pdb --analyse-fragment-results --fragment-resultfile $file], 0, [ignore], [stderr])
+AT_CHECK([../../molecuilder -i ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/pre/alkane-3.pdb -o tremolo --set-tremolo-atomdata "Id type x=3 u=3 F=3" --reset 1 --analyse-fragment-results --fragment-resultfile $file], 0, [ignore], [stderr])
+AT_CHECK([diff alkane-3.data ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/post/alkane-3.data], 0, [ignore], [ignore])
 AT_CHECK([output=BondFragment_Energy.dat; diff $output ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/post/LongRange/$output], 0, [ignore], [ignore])
 AT_CHECK([output=BondFragment_Forces.dat; diff $output ${abs_top_srcdir}/tests/regression/Fragmentation/AnalyseFragmentationResults/post/LongRange/$output], 0, [ignore], [ignore])
