Index: src/Fragmentation/Summation/AllLevelOrthogonalSummator.hpp
===================================================================
--- src/Fragmentation/Summation/AllLevelOrthogonalSummator.hpp	(revision 58952a771e02f3b934ce6a415b068d48ac6313aa)
+++ src/Fragmentation/Summation/AllLevelOrthogonalSummator.hpp	(revision 675cd611bd03a5b8b2837d1811ebb901240fc57e)
@@ -37,5 +37,6 @@
    * \param _container container of IndexSet's such that each set has correct order
    *        to job id and hence to _data.
-   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
+   * \param _MatrixNrLookup lookup from job id to ordering in above vectors, if
+   *        out of range this value is set to zero, hence ignored.
    * \param _results vector place results into
    */
Index: src/Fragmentation/Summation/AllLevelSummator.hpp
===================================================================
--- src/Fragmentation/Summation/AllLevelSummator.hpp	(revision 58952a771e02f3b934ce6a415b068d48ac6313aa)
+++ src/Fragmentation/Summation/AllLevelSummator.hpp	(revision 675cd611bd03a5b8b2837d1811ebb901240fc57e)
@@ -37,5 +37,6 @@
    * \param _container container of IndexSet's such that each set has correct order
    *        to job id and hence to _data.
-   * \param _MatrixNrLookup lookup from job id to ordering in above vectors
+   * \param _MatrixNrLookup lookup from job id to ordering in above vectors, if
+   *        out of range this value is set to zero, hence ignored.
    * \param _levelresults vector place levelresults into
    */
Index: src/Fragmentation/Summation/OrthogonalSummator.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummator.hpp	(revision 58952a771e02f3b934ce6a415b068d48ac6313aa)
+++ src/Fragmentation/Summation/OrthogonalSummator.hpp	(revision 675cd611bd03a5b8b2837d1811ebb901240fc57e)
@@ -22,4 +22,5 @@
 #include "Fragmentation/Summation/OrthogonalSummation.hpp"
 #include "Fragmentation/Summation/SetValue.hpp"
+#include "Fragmentation/Summation/ZeroInstance.hpp"
 
 /** OrthogonalSummator is a general class for making us of OrthogonalSummation.
@@ -50,4 +51,8 @@
  * \endcode
  * i.e. at_key knows the correct type!
+ *
+ * Note that you may skip values in the summation by setting their index in
+ * _MatrixNrLookup to something outside the range of [0,_data.size()], e.g.
+ * -1.
  *
  */
@@ -155,5 +160,5 @@
   {
     // if the power set of , we don't need to get rid of the "union index set"
-    typename OrthogonalSummation<MapValue>::InputValues_t values(data.size());
+    typename OrthogonalSummation<MapValue>::InputValues_t values(data.size(), ZeroInstance<MapValue>());
     for (typename std::map<JobId_t, MapType>::const_iterator dataiter = data.begin();
         dataiter != data.end(); ++dataiter) {
@@ -165,5 +170,6 @@
           "OrthogonalSummation<>::createValues() - MatrixNrLookup does not contain id "
           +toString(jobid)+".");
-      values[ nriter->second ] = value;
+      if ((nriter->second >= 0 ) && (nriter->second < data.size()))
+        values[ nriter->second ] = value;
     }
     return values;
Index: src/Fragmentation/Summation/Summation_impl.hpp
===================================================================
--- src/Fragmentation/Summation/Summation_impl.hpp	(revision 58952a771e02f3b934ce6a415b068d48ac6313aa)
+++ src/Fragmentation/Summation/Summation_impl.hpp	(revision 675cd611bd03a5b8b2837d1811ebb901240fc57e)
@@ -19,4 +19,5 @@
 
 #include "Fragmentation/Summation/printKeyNames.hpp"
+#include "Fragmentation/Summation/ZeroInstance.hpp"
 
 /** Constructor of class Summation.
@@ -68,5 +69,5 @@
 {
   typename SetValueMap<T>::const_iterator iter = setvalues.begin();
-  T sum; // we must assume here that cstor initializes to 0
+  T sum = ZeroInstance<T>();
   if (iter->first->size() <= level)
     sum = (iter->second)->getValue();
Index: src/Fragmentation/Summation/Summator.hpp
===================================================================
--- src/Fragmentation/Summation/Summator.hpp	(revision 58952a771e02f3b934ce6a415b068d48ac6313aa)
+++ src/Fragmentation/Summation/Summator.hpp	(revision 675cd611bd03a5b8b2837d1811ebb901240fc57e)
@@ -22,4 +22,5 @@
 #include "Fragmentation/Summation/Summation.hpp"
 #include "Fragmentation/Summation/SetValue.hpp"
+#include "Fragmentation/Summation/ZeroInstance.hpp"
 
 /** Summator is a general class for making us of Summation.
@@ -50,4 +51,8 @@
  * \endcode
  * i.e. at_key knows the correct type!
+ *
+ * Note that you may skip values in the summation by setting their index in
+ * _MatrixNrLookup to something outside the range of [0,_data.size()], e.g.
+ * -1.
  *
  */
@@ -157,5 +162,5 @@
   {
     // if we just have one indexset, we don't need to get rid of the "union index set"
-    typename Summation<MapValue>::InputValues_t values(data.size());
+    typename Summation<MapValue>::InputValues_t values(data.size(), ZeroInstance<MapValue>());
     for (typename std::map<JobId_t, MapType>::const_iterator dataiter = data.begin();
         dataiter != data.end(); ++dataiter) {
@@ -167,5 +172,6 @@
           "Summation<>::createValues() - MatrixNrLookup does not contain id "
           +toString(jobid)+".");
-      values[ nriter->second ] = value;
+      if ((nriter->second >= 0 ) && (nriter->second < data.size()))
+        values[ nriter->second ] = value;
     }
     return values;
