Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -241,5 +241,5 @@
     const FragmentationLongRangeResults &results)
 {
-  // print tables (without eigenvalues, they go extra)
+  // print tables per keyset(without grids, they go extra)
 
   {
@@ -326,11 +326,12 @@
 
       // obtain potential distribution
-      std::map<IndexSet::ptr, std::pair< VMGDataMap_t, VMGDataMap_t> >::const_iterator potentialiter
-          = longrangeresults.Result_perIndexSet_LongRange.find(index);
-      ASSERT( potentialiter != longrangeresults.Result_perIndexSet_LongRange.end(),
+      std::map<IndexSet::ptr, std::pair< VMGDataGridMap_t, VMGDataGridMap_t> >::const_iterator potentialiter
+          = longrangeresults.Result_perIndexSet_LongRange_Grid.find(index);
+      ASSERT( potentialiter != longrangeresults.Result_perIndexSet_LongRange_Grid.end(),
           "appendToHomologyFile() - cannot find index "+toString(*index)
           +" in FragmentResults.");
       // add e+n potentials
-      value.potential_distribution = boost::fusion::at_key<VMGDataFused::both_sampled_potential>(potentialiter->second.second); // contributions
+      value.potential_distribution =
+          boost::fusion::at_key<VMGDataFused::both_sampled_potential>(potentialiter->second.second); // contributions
 //      // and re-average to zero (integral is times volume_element which we don't need here)
 //      const double sum =
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -316,4 +316,5 @@
         destiter->second.both_sampled_potential = srciter->second.sampled_potential;
         destiter->second.nuclei_long = srciter->second.nuclei_long;
+        destiter->second.particle_forces = srciter->second.particle_forces;
       }
     }
Index: src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.cpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.cpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.cpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -126,4 +126,9 @@
         Result_LongRange_fused, Result_perIndexSet_LongRange);
 
+    // then sum up
+    OrthogonalSumUpPerLevel<VMGDataGridMap_t, VMGData, VMGDataGridVector_t>(
+        longrangeData, VMGMatrixNrLookup, container, subsetmap,
+        Result_GridLongRange_fused, Result_perIndexSet_LongRange_Grid);
+
     Result_LongRangeIntegrated_fused.reserve(MaxLevel);
     // NOTE: potential for level 1 is wrongly calculated within a molecule
@@ -146,5 +151,5 @@
       // the full solution.
       const SamplingGrid &short_range_correction =
-          boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_LongRange_fused[level-1]);
+          boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_GridLongRange_fused[level-1]);
       double electron_short_range_energy = short_range_correction.integral();
       full_sample_solution -= short_range_correction;
@@ -207,5 +212,5 @@
 //      SamplingGrid full_sample_solution = fullsolutionData.back().sampled_potential;
 //      const SamplingGrid &short_range_correction =
-//          boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_LongRange_fused.back()).getFullContribution();
+//          boost::fusion::at_key<VMGDataFused::sampled_potential>(Result_GridLongRange_fused.back()).getFullContribution();
 //      full_sample_solution -= short_range_correction;
 //      // multiply element-wise with charge distribution
Index: src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Fragmentation/Summation/Containers/FragmentationLongRangeResults.hpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -104,6 +104,8 @@
   //!> results per level of summed up sampled grid charge
   std::vector<MPQCDataGridMap_t> Result_Grid_fused;
-  //!> results per level of summed up long range potential grids and energy
+  //!> results per level of summed up long range energy and forces
   std::vector<VMGDataMap_t> Result_LongRange_fused;
+  //!> results per level of summed up long range potential grids
+  std::vector<VMGDataGridMap_t> Result_GridLongRange_fused;
   //!> results per level of summed up long range true energy
   std::vector<VMGDataLongRangeMap_t> Result_LongRangeIntegrated_fused;
@@ -111,6 +113,8 @@
   //!> results per IndexSet of summed up sampled grid charge
   std::map<IndexSet::ptr, std::pair<MPQCDataGridMap_t,MPQCDataGridMap_t> > Result_perIndexSet_Grid;
-  //!> results per IndexSet of summed up long range potential grids and energy
+  //!> results per IndexSet of summed up long range energy and forces
   std::map<IndexSet::ptr, std::pair<VMGDataMap_t, VMGDataMap_t> > Result_perIndexSet_LongRange;
+  //!> results per IndexSet of summed up long range potential grids
+  std::map<IndexSet::ptr, std::pair<VMGDataGridMap_t, VMGDataGridMap_t> > Result_perIndexSet_LongRange_Grid;
   // we don't need the map pendant for Result_LongRangeIntegrated_fused, as this
   // quantity makes sense only level-wise
Index: src/Fragmentation/Summation/Containers/VMGDataMap.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/VMGDataMap.hpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Fragmentation/Summation/Containers/VMGDataMap.hpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -33,6 +33,4 @@
  */
 typedef boost::fusion::map<
-    boost::fusion::pair<VMGDataFused::sampled_potential, SamplingGrid >,
-    boost::fusion::pair<VMGDataFused::both_sampled_potential, SamplingGrid >,
     boost::fusion::pair<VMGDataFused::nuclei_long, double >,
     boost::fusion::pair<VMGDataFused::electron_long, double >,
@@ -41,10 +39,18 @@
 
 typedef boost::mpl::list<
-    VMGDataFused::sampled_potential,
-    VMGDataFused::both_sampled_potential,
     VMGDataFused::nuclei_long,
     VMGDataFused::electron_long,
 	VMGDataFused::particle_forces
 > VMGDataVector_t;
+
+typedef boost::fusion::map<
+    boost::fusion::pair<VMGDataFused::sampled_potential, SamplingGrid >,
+    boost::fusion::pair<VMGDataFused::both_sampled_potential, SamplingGrid >
+> VMGDataGridMap_t;
+
+typedef boost::mpl::list<
+    VMGDataFused::sampled_potential,
+    VMGDataFused::both_sampled_potential
+> VMGDataGridVector_t;
 
 /** This boost::fusion map defines key-value or rather key-type pairs with
Index: src/Fragmentation/Summation/Converter/DataConverter.hpp
===================================================================
--- src/Fragmentation/Summation/Converter/DataConverter.hpp	(revision ce98747dfef7546f47996405283750bc34c9ad5d)
+++ src/Fragmentation/Summation/Converter/DataConverter.hpp	(revision 83a425eb7c3e26118a81096a43c79ffe877b2113)
@@ -88,8 +88,24 @@
     LOG(4, "DEBUG: Current extracted Data is " << extractedData << ".");
     VMGDataMap_t instance;
+    boost::fusion::at_key<VMGDataFused::nuclei_long>(instance) = extractedData.nuclei_long;
+    boost::fusion::at_key<VMGDataFused::electron_long>(instance) = extractedData.electron_long;
+    VMGData_fused.insert( std::make_pair(dataiter->first, instance) );
+  }
+}
+
+template <>
+inline void convertDataTo<VMGData, VMGDataGridMap_t>(
+    const std::map<JobId_t, VMGData> &longrangeData,
+    std::map<JobId_t, VMGDataGridMap_t> &VMGData_fused)
+{
+  // energy_t
+  VMGData_fused.clear();
+  for(std::map<JobId_t, VMGData>::const_iterator dataiter = longrangeData.begin();
+      dataiter != longrangeData.end(); ++dataiter) {
+    const VMGData &extractedData = dataiter->second;
+    LOG(4, "DEBUG: Current extracted Data is " << extractedData << ".");
+    VMGDataGridMap_t instance;
     boost::fusion::at_key<VMGDataFused::sampled_potential>(instance) = extractedData.sampled_potential;
     boost::fusion::at_key<VMGDataFused::both_sampled_potential>(instance) = extractedData.both_sampled_potential;
-    boost::fusion::at_key<VMGDataFused::nuclei_long>(instance) = extractedData.nuclei_long;
-    boost::fusion::at_key<VMGDataFused::electron_long>(instance) = extractedData.electron_long;
     VMGData_fused.insert( std::make_pair(dataiter->first, instance) );
   }
