Index: src/Fragmentation/SetValues/Histogram.cpp
===================================================================
--- src/Fragmentation/SetValues/Histogram.cpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/SetValues/Histogram.cpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -343,2 +343,8 @@
   return area;
 }
+
+template<> Histogram ZeroInstance<Histogram>()
+{
+  Histogram returnvalue;
+  return returnvalue;
+}
Index: src/Fragmentation/SetValues/Histogram.hpp
===================================================================
--- src/Fragmentation/SetValues/Histogram.hpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/SetValues/Histogram.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -210,4 +210,7 @@
 std::ostream & operator<<(std::ostream &ost, const Histogram &histogram);
 
+template<typename T> T ZeroInstance();
+template<> Histogram ZeroInstance<Histogram>();
+
 
 #endif /* HISTOGRAM_HPP_ */
Index: src/Fragmentation/SetValues/IndexedVectors.cpp
===================================================================
--- src/Fragmentation/SetValues/IndexedVectors.cpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/SetValues/IndexedVectors.cpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -109,2 +109,8 @@
   return ost;
 }
+
+template<> IndexedVectors ZeroInstance<IndexedVectors>()
+{
+  IndexedVectors returnvalue;
+  return returnvalue;
+}
Index: src/Fragmentation/SetValues/IndexedVectors.hpp
===================================================================
--- src/Fragmentation/SetValues/IndexedVectors.hpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/SetValues/IndexedVectors.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -128,4 +128,7 @@
 std::ostream & operator<<(std::ostream &ost, const IndexedVectors &other);
 
+template<typename T> T ZeroInstance();
+template<> IndexedVectors ZeroInstance<IndexedVectors>();
+
 
 #endif /* INDEXEDVECTORS_HPP_ */
Index: src/Fragmentation/Summation/Makefile.am
===================================================================
--- src/Fragmentation/Summation/Makefile.am	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/Summation/Makefile.am	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -22,5 +22,6 @@
 	Fragmentation/Summation/Summation.hpp \
 	Fragmentation/Summation/Summation_impl.hpp \
-	Fragmentation/Summation/Summator.hpp
+	Fragmentation/Summation/Summator.hpp \
+	Fragmentation/Summation/ZeroInstance.hpp
 
 
Index: src/Fragmentation/Summation/OrthogonalSummation_impl.hpp
===================================================================
--- src/Fragmentation/Summation/OrthogonalSummation_impl.hpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Fragmentation/Summation/OrthogonalSummation_impl.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -17,4 +17,6 @@
 #include "CodePatterns/IteratorAdaptors.hpp"
 #include "CodePatterns/Log.hpp"
+
+#include "Fragmentation/Summation/ZeroInstance.hpp"
 
 /** Constructor of class OrthogonalSummation.
@@ -66,5 +68,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)->getContribution();
Index: src/Fragmentation/Summation/ZeroInstance.hpp
===================================================================
--- src/Fragmentation/Summation/ZeroInstance.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
+++ src/Fragmentation/Summation/ZeroInstance.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -0,0 +1,31 @@
+/*
+ * ZeroInstance.hpp
+ *
+ *  Created on: Aug 10, 2012
+ *      Author: heber
+ */
+
+#ifndef ZEROINSTANCE_HPP_
+#define ZEROINSTANCE_HPP_
+
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+/** This functions returns an instance equal to zero.
+ *
+ * @return instance initialized to zero
+ */
+template <typename T> T ZeroInstance()
+{
+  return NULL;
+}
+
+template<> inline double ZeroInstance<double>() { return 0.; }
+template<> inline int ZeroInstance<int>() { return 0; }
+template<> inline size_t ZeroInstance<size_t>() { return (size_t)0; }
+
+
+#endif /* ZEROINSTANCE_HPP_ */
Index: src/Jobs/Grid/SamplingGrid.cpp
===================================================================
--- src/Jobs/Grid/SamplingGrid.cpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Jobs/Grid/SamplingGrid.cpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -150,4 +150,10 @@
 }
 
+template<> SamplingGrid ZeroInstance<SamplingGrid>()
+{
+  SamplingGrid returnvalue;
+  return returnvalue;
+}
+
 // we need to explicitly instantiate the serialization functions as
 // its is only serialized through its base class FragmentJob
Index: src/Jobs/Grid/SamplingGrid.hpp
===================================================================
--- src/Jobs/Grid/SamplingGrid.hpp	(revision 310201030048c0e346d50c39f08bcb7a69c0d92c)
+++ src/Jobs/Grid/SamplingGrid.hpp	(revision beb16e5d247b507955235e440b1e7f8e0b097418)
@@ -162,4 +162,7 @@
 std::ostream & operator<<(std::ostream &ost, const SamplingGrid& other);
 
+template<typename T> T ZeroInstance();
+template<> SamplingGrid ZeroInstance<SamplingGrid>();
+
 // we need to give this class a unique key for serialization
 // its is only serialized through its base class FragmentJob
