diff --git a/src/averagedistanceassembler.hh b/src/averagedistanceassembler.hh
index dfd910290d7d346e3fa2e9253bcbe7eb4b778cba..5c54f707be73dde175ede96941f188d38dced20f 100644
--- a/src/averagedistanceassembler.hh
+++ b/src/averagedistanceassembler.hh
@@ -32,7 +32,10 @@ public:
     void assembleGradient(const TargetSpace& x,
                           typename TargetSpace::EmbeddedTangentVector& gradient) const
     {
-        DUNE_THROW(Dune::NotImplemented, "assembleGradient");
+        gradient = 0;
+        for (size_t i=0; i<coefficients_.size(); i++)
+            gradient.axpy(weights_[i]*TargetSpace::distance(coefficients_[i], x),
+                          TargetSpace::derivativeOfDistanceWRTSecondArgument(coefficients_[i], x));
     }
 
     void assembleMatrix(const TargetSpace& x,