diff --git a/pymbolic/geometric_algebra/mapper.py b/pymbolic/geometric_algebra/mapper.py
index 88c4991289b211669d83b47e95202cbf087f0603..5be6c9c0ed2823acdf674ec64dc65c5a2f720bdc 100644
--- a/pymbolic/geometric_algebra/mapper.py
+++ b/pymbolic/geometric_algebra/mapper.py
@@ -324,11 +324,11 @@ class DerivativeBinder(IdentityMapper):
 
             result = new_result
 
-        from pymbolic.primitives import flattened_sum
+        from pymbolic.primitives import flattened_product, flattened_sum
         return flattened_sum([
-                    type(expr)(tuple([
+                    flattened_product([
                         self.rec(prod_term) for prod_term in prod_term_list
-                        ]))
+                        ])
                     for prod_term_list in result
                     ])