Index: src/Fragmentation/Summation/OrthogonalSummation.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummation.hpp	(revision f856ecd74c7c93e41e94dee02a23bcc67b6721ec)
+++ src/Fragmentation/Summation/OrthogonalSummation.hpp	(revision ff7ac6d85533f168572a659ac19fab59afd62f1d)
@@ -53,4 +53,20 @@
   }
 
+  /** Setter for the zero instance to use as the base in summation.
+   *
+   * This may be used to force some parameters in the summation. We
+   * will use this value to set the initial value and all contributions
+   * are added via operator+(). E.g. In summing SamplingGrid (charge
+   * grids) we may use this instance to enforce a smaller grid size
+   * in the summation of the contributions if fragments have been
+   * calculated at a much higher grid level.
+   *
+   * \param _zeroinstance
+   */
+  void setZeroInstance(const T &_zeroinstance)
+  {
+    zeroinstance = _zeroinstance;
+  }
+
 private:
   T Sum(const size_t level) const;
@@ -61,4 +77,6 @@
   //!> set of all subset values
   SetValueMap<T> setvalues;
+  //!> base/"zero" instance to sum upon, defaults to ZeroInstance<T>
+  T zeroinstance;
 };
 
Index: src/Fragmentation/Summation/OrthogonalSummation_impl.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummation_impl.hpp	(revision f856ecd74c7c93e41e94dee02a23bcc67b6721ec)
+++ src/Fragmentation/Summation/OrthogonalSummation_impl.hpp	(revision ff7ac6d85533f168572a659ac19fab59afd62f1d)
@@ -18,4 +18,6 @@
 #include "CodePatterns/Log.hpp"
 
+#include "Fragmentation/Summation/OrthogonalSummation.hpp"
+
 #include "Fragmentation/Summation/ZeroInstance.hpp"
 #include "Fragmentation/Summation/printKeyNames.hpp"
@@ -29,5 +31,6 @@
     InputValues_t& values,
     SubsetMap::ptr _subsetmap) :
-  subsetmap(_subsetmap)
+  subsetmap(_subsetmap),
+  zeroinstance(ZeroInstance<T>())
 {
   ASSERT( indices.size() == values.size(),
@@ -69,7 +72,7 @@
 {
   typename SetValueMap<T>::const_iterator iter = setvalues.begin();
-  T sum(ZeroInstance<T>());
+  T sum(zeroinstance);
   if (iter->first->size() <= level)
-    sum = (iter->second)->getContribution();
+    sum += (iter->second)->getContribution();
   LOG(3, "DEBUG: Contribution from subset "+toString(*(iter->second->getIndexSet()))
       +" is "+toString(sum)+".");
Index: src/Fragmentation/Summation/Summation.hpp
===================================================================
--- src/Fragmentation/Summation/Summation.hpp	(revision f856ecd74c7c93e41e94dee02a23bcc67b6721ec)
+++ src/Fragmentation/Summation/Summation.hpp	(revision ff7ac6d85533f168572a659ac19fab59afd62f1d)
@@ -55,4 +55,20 @@
   }
 
+  /** Setter for the zero instance to use as the base in summation.
+   *
+   * This may be used to force some parameters in the summation. We
+   * will use this value to set the initial value and all contributions
+   * are added via operator+(). E.g. In summing SamplingGrid (charge
+   * grids) we may use this instance to enforce a smaller grid size
+   * in the summation of the contributions if fragments have been
+   * calculated at a much higher grid level.
+   *
+   * \param _zeroinstance
+   */
+  void setZeroInstance(const T &_zeroinstance)
+  {
+    zeroinstance = _zeroinstance;
+  }
+
 private:
   T Sum(const size_t level) const;
@@ -63,4 +79,6 @@
   //!> set of all subset values
   SetValueMap<T> setvalues;
+  //!> base/"zero" instance to sum upon, defaults to ZeroInstance<T>
+  T zeroinstance;
 };
 
Index: src/Fragmentation/Summation/Summation_impl.hpp
===================================================================
--- src/Fragmentation/Summation/Summation_impl.hpp	(revision f856ecd74c7c93e41e94dee02a23bcc67b6721ec)
+++ src/Fragmentation/Summation/Summation_impl.hpp	(revision ff7ac6d85533f168572a659ac19fab59afd62f1d)
@@ -15,6 +15,9 @@
 #endif
 
+#include "CodePatterns/Assert.hpp"
 #include "CodePatterns/IteratorAdaptors.hpp"
 #include "CodePatterns/Log.hpp"
+
+#include "Fragmentation/Summation/Summation.hpp"
 
 #include "Fragmentation/Summation/printKeyNames.hpp"
@@ -29,5 +32,6 @@
     InputValues_t& values,
     SubsetMap::ptr _subsetmap) :
-  subsetmap(_subsetmap)
+  subsetmap(_subsetmap),
+  zeroinstance(ZeroInstance<T>())
 {
   ASSERT( indices.size() == values.size(),
@@ -69,7 +73,7 @@
 {
   typename SetValueMap<T>::const_iterator iter = setvalues.begin();
-  T sum = ZeroInstance<T>();
+  T sum(zeroinstance);
   if (iter->first->size() <= level)
-    sum = (iter->second)->getValue();
+    sum += (iter->second)->getValue();
   LOG(3, "DEBUG: Value from subset "+toString(*(iter->second->getIndexSet()))
       +" is "+toString(sum)+".");
