Index: src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp
===================================================================
--- src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Actions/FragmentationAction/AnalyseFragmentationResultsAction.cpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -64,4 +64,5 @@
 #include "Atom/atom.hpp"
 #include "Element/element.hpp"
+#include "Fragmentation/EdgesPerFragment.hpp"
 #include "Fragmentation/Exporters/ExportGraph_ToJobs.hpp"
 #include "Fragmentation/Summation/Containers/FragmentationChargeDensity.hpp"
@@ -309,7 +310,14 @@
   const KeySetsContainer &Indices = shortrangeresults.getKeySet();
   const KeySetsContainer &ForceIndices = shortrangeresults.getForceKeySet();
+  const FragmentationEdges::edges_per_fragment_t &edges_per_fragment =
+      shortrangeresults.getEdgesPerFragment();
   if (Indices.KeySets.size() != ForceIndices.KeySets.size()) {
     ELOG(1, "appendToHomologies() - Indices (" << Indices.KeySets.size()
         << ") and ForceIndices (" << ForceIndices.KeySets.size() << ") sizes differ.");
+    return false;
+  }
+  if (Indices.KeySets.size() != edges_per_fragment.size()) {
+    ELOG(1, "appendToHomologies() - Indices (" << Indices.KeySets.size()
+        << ") and edges_per_fragment (" << edges_per_fragment.size() << ") sizes differ.");
     return false;
   }
@@ -500,4 +508,5 @@
     const KeySetsContainer &forcekeysets,
     const KeySetsContainer &cycles,
+    const FragmentationShortRangeResults::edges_per_fragment_t &edges_per_fragment,
     const FragmentationShortRangeResults &shortrangeresults)
 {
@@ -559,5 +568,6 @@
         << localValueMask << ".");
     // create FragmentationShortRangeResults
-    FragmentationShortRangeResults localresults(shortrangedata, keysets, forcekeysets, localValueMask);
+    FragmentationShortRangeResults localresults(
+        shortrangedata, keysets, forcekeysets, edges_per_fragment, localValueMask);
     // and perform summation
     localresults(shortrangedata);
@@ -605,4 +615,6 @@
   const KeySetsContainer &keysets = container.getKeySets();
   const KeySetsContainer &forcekeysets = container.getForceKeySets();
+  const FragmentationResultContainer::edges_per_fragment_t edges_per_fragment =
+      container.getEdgesPerFragment();
   const bool DoLongrange = container.areFullRangeResultsPresent();
   const bool IsAngstroem = true;
@@ -616,5 +628,6 @@
   /// respective bond order.
   std::vector<bool> ValueMask(shortrangedata.size(), true);
-  FragmentationShortRangeResults shortrangeresults(shortrangedata, keysets, forcekeysets, ValueMask);
+  FragmentationShortRangeResults shortrangeresults(
+      shortrangedata, keysets, forcekeysets, edges_per_fragment, ValueMask);
   shortrangeresults(shortrangedata);
   printReceivedShortResults(shortrangeresults);
@@ -662,4 +675,5 @@
         forcekeysets,
         cycles,
+        edges_per_fragment,
         shortrangeresults);
   }
Index: src/Actions/FragmentationAction/FragmentationAutomationAction.cpp
===================================================================
--- src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Actions/FragmentationAction/FragmentationAutomationAction.cpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -229,4 +229,6 @@
   const KeySetsContainer& keysets = FragmentJobQueue::getInstance().getKeySets();
   const KeySetsContainer& forcekeysets = FragmentJobQueue::getInstance().getFullKeySets();
+  const FragmentJobQueue::edges_per_fragment_t &edges_per_fragment =
+      FragmentJobQueue::getInstance().getEdgesPerFragment();
 
   size_t Exitflag = 0;
@@ -496,12 +498,12 @@
   }
   container.clear();
-  container.addFullResults(keysets, forcekeysets, shortrangedata, longrangedata);
+  container.addFullResults(keysets, forcekeysets, edges_per_fragment, shortrangedata, longrangedata);
   } else {
     container.clear();
-    container.addShortRangeResults(keysets, forcekeysets, shortrangedata);
+    container.addShortRangeResults(keysets, forcekeysets, edges_per_fragment, shortrangedata);
   }
 #else
   container.clear();
-  container.addShortRangeResults(keysets, forcekeysets, shortrangedata);
+  container.addShortRangeResults(keysets, forcekeysets, edges_per_fragment, shortrangedata);
 #endif
 
Index: src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Fragmentation/Summation/Containers/FragmentationResultContainer.cpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -45,4 +45,5 @@
     const KeySetsContainer &_keysets,
     const KeySetsContainer &_forcekeysets,
+    const edges_per_fragment_t &_edges_per_fragment,
     const shortrangedata_t &_shortrangedata,
     const longrangedata_t &_longrangedata
@@ -55,4 +56,8 @@
       "FragmentationResultContainer::addFullResults() - keysets ("
       +toString(_keysets.KeySets.size())+") and forcekeysets ("+toString(_forcekeysets.KeySets.size())
+      +") differ in size.");
+  ASSERT( _keysets.KeySets.size() == _edges_per_fragment.size(),
+      "FragmentationResultContainer::addFullResults() - keysets ("
+      +toString(_keysets.KeySets.size())+") and _edges_per_fragment ("+toString(_edges_per_fragment.size())
       +") differ in size.");
   ASSERT( _keysets.KeySets.size() == _shortrangedata.size(),
@@ -67,4 +72,5 @@
   keysets.insert(_keysets);
   forcekeysets.insert(_forcekeysets);
+  edges_per_fragment.insert(edges_per_fragment.end(), _edges_per_fragment.begin(), _edges_per_fragment.end());
   shortrangedata.insert(_shortrangedata.begin(), _shortrangedata.end());
   longrangedata.insert(_longrangedata.begin(), _longrangedata.end());
@@ -75,4 +81,5 @@
     const KeySetsContainer &_keysets,
     const KeySetsContainer &_forcekeysets,
+    const edges_per_fragment_t &_edges_per_fragment,
     const shortrangedata_t &_shortrangedata
     )
@@ -85,4 +92,8 @@
       +toString(_keysets.KeySets.size())+") and forcekeysets ("+toString(_forcekeysets.KeySets.size())
       +") differ in size.");
+  ASSERT( _keysets.KeySets.size() == _edges_per_fragment.size(),
+      "FragmentationResultContainer::addFullResults() - keysets ("
+      +toString(_keysets.KeySets.size())+") and _edges_per_fragment ("+toString(_edges_per_fragment.size())
+      +") differ in size.");
   ASSERT( _keysets.KeySets.size() == _shortrangedata.size(),
       "FragmentationResultContainer::addFullResults() - keysets ("
@@ -93,4 +104,5 @@
   keysets.insert(_keysets);
   forcekeysets.insert(_forcekeysets);
+  edges_per_fragment.insert(edges_per_fragment.end(), _edges_per_fragment.begin(), _edges_per_fragment.end());
   shortrangedata.insert(_shortrangedata.begin(), _shortrangedata.end());
 }
Index: src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Fragmentation/Summation/Containers/FragmentationResultContainer.hpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -31,4 +31,5 @@
 #endif
 
+#include "Fragmentation/EdgesPerFragment.hpp"
 #include "Fragmentation/KeySetsContainer.hpp"
 #include "Fragmentation/Summation/IndexSet.hpp"
@@ -63,4 +64,6 @@
   //!> typedef for short range data container
   typedef std::map<JobId_t, MPQCData> shortrangedata_t;
+  //!> use FragmentJobQueue's typedef here
+  typedef FragmentationEdges::edges_per_fragment_t edges_per_fragment_t;
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
   //!> typedef for long range data container
@@ -75,4 +78,5 @@
    * \param _keysets
    * \param _forcekeysetskeysets
+   * \param _edges_per_fragment
    * \param _shortrangedata
    * \param _longrangedata
@@ -81,4 +85,5 @@
       const KeySetsContainer &_keysets,
       const KeySetsContainer &_forcekeysets,
+      const edges_per_fragment_t &_edges_per_fragment,
       const shortrangedata_t &_shortrangedata,
       const longrangedata_t &_longrangedata
@@ -92,4 +97,5 @@
    * \param _keysets
    * \param _forcekeysets
+   * \param _edges_per_fragment
    * \param _shortrangedata
    */
@@ -97,4 +103,5 @@
       const KeySetsContainer &_keysets,
       const KeySetsContainer &_forcekeysets,
+      const edges_per_fragment_t &_edges_per_fragment,
       const shortrangedata_t &_shortrangedata
       );
@@ -129,4 +136,5 @@
     shortrangedata.clear();
     summedshortrange.clear();
+    edges_per_fragment.clear();
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
     longrangedata.clear();
@@ -139,5 +147,8 @@
   const KeySetsContainer &getForceKeySets() const  { return forcekeysets; }
   const shortrangedata_t& getShortRangeResults() const  { return shortrangedata; }
-  const FragmentationShortRangeResults::summedshortrange_t& getShortRangeSummedResults() const  { return summedshortrange; }
+  const FragmentationShortRangeResults::summedshortrange_t& getShortRangeSummedResults() const
+  { return summedshortrange; }
+  const edges_per_fragment_t& getEdgesPerFragment() const
+  { return edges_per_fragment; }
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
   const longrangedata_t& getLongRangeResults() const;
@@ -162,4 +173,6 @@
   //!> container for summed up results per index set
   FragmentationShortRangeResults::summedshortrange_t summedshortrange;
+  //!> container for the edge set per index set (starting at 0)
+  edges_per_fragment_t edges_per_fragment;
 
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
@@ -182,4 +195,6 @@
     if (version > 1)
       ar & summedshortrange;
+    if (version > 2)
+      ar & edges_per_fragment;
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
     ar & longrangedata;
@@ -197,4 +212,6 @@
     if (version > 1)
       ar & summedshortrange;
+    if (version > 2)
+      ar & edges_per_fragment;
 #if defined(HAVE_JOBMARKET) && defined(HAVE_VMG)
     ar & longrangedata;
@@ -205,5 +222,5 @@
 
 // version for serialized information associated to FragmentationResultContainer
-BOOST_CLASS_VERSION(FragmentationResultContainer, 2)
+BOOST_CLASS_VERSION(FragmentationResultContainer, 3)
 
 #endif /* FRAGMENTATIONRESULTCONTAINER_HPP_ */
Index: src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.cpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -64,7 +64,9 @@
     const KeySetsContainer& _KeySet,
     const KeySetsContainer& _ForceKeySet,
+    const edges_per_fragment_t &_edges_per_fragment,
     std::vector<bool> &_ValueMask) :
     KeySet(_KeySet),
-    ForceKeySet(_ForceKeySet)
+    ForceKeySet(_ForceKeySet),
+    edges_per_fragment(_edges_per_fragment)
 {
   initLookups(fragmentData,_ValueMask);
Index: src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp
===================================================================
--- src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp	(revision 944508121e2c7dd042f9eb580ac7ba4c38602733)
+++ src/Fragmentation/Summation/Containers/FragmentationShortRangeResults.hpp	(revision ea63cb025e37fbb1a7d792c86948d8d57b4e96d8)
@@ -24,4 +24,5 @@
 #endif
 
+#include "Fragmentation/EdgesPerFragment.hpp"
 #include "Fragmentation/KeySetsContainer.hpp"
 #include "Fragmentation/Summation/IndexSet.hpp"
@@ -42,4 +43,6 @@
 struct FragmentationShortRangeResults
 {
+  typedef FragmentationEdges::edges_per_fragment_t edges_per_fragment_t;
+
   /** Constructor for class FragmentationShortRangeResults, based on KeySets.
    *
@@ -47,4 +50,5 @@
    * @param _KeySet KeySets of all (non-hydrogen) atoms
    * @param _ForceKeySet KeySets of all atoms except those added by saturation
+   * @param _edges_per_fragment edges of the bond graph over all fragment jobs
    * @param _ValueMask masks whether to use a value (true) or not (false),
    *        default is true for all values
@@ -54,4 +58,5 @@
       const KeySetsContainer& _KeySet,
       const KeySetsContainer& _ForceKeySet,
+      const edges_per_fragment_t &_edges_per_fragment,
       std::vector<bool> &_ValueMask);
 
@@ -79,4 +84,8 @@
   }
 
+  const edges_per_fragment_t& getEdgesPerFragment() const {
+    return edges_per_fragment;
+  }
+
   typedef std::map<IndexSet::ptr, std::pair<MPQCData,MPQCData> > summedshortrange_t;
   const summedshortrange_t getSummedShortRangeResults() const;
@@ -91,4 +100,5 @@
   KeySetsContainer KeySet;
   KeySetsContainer ForceKeySet;
+  edges_per_fragment_t edges_per_fragment;
   IndexSetContainer::ptr container;
   SubsetMap::ptr subsetmap;
