diff --git a/src/typed-geometry/functions/basic/statistics.hh b/src/typed-geometry/functions/basic/statistics.hh
index fc5d6e53440cdf1c015a9ab4e2adc7f6cc3971be..c2eada4a88c597fb716c7f01316cdb093e3371ed 100644
--- a/src/typed-geometry/functions/basic/statistics.hh
+++ b/src/typed-geometry/functions/basic/statistics.hh
@@ -38,11 +38,11 @@ template <class T = void, class RangeT, class TransformF, class ReduceF>
     auto it = tg::begin(values);
     using U = std::decay_t<decltype(f(t(R(*it)), t(R(*it))))>;
     auto const e = tg::end(values);
-    auto r = t(R(*it));
+    U r = t(R(*it));
     it++;
     while (it != e)
     {
-        r = U(t(R(*it)));
+        r = f(r, t(R(*it)));
         it++;
     }
     return r;