diff --git a/AMDiS/src/FirstOrderTerm.h b/AMDiS/src/FirstOrderTerm.h
index a1ee0a7023472ec9be2f9f31fcb1e5d1bfed29a0..51bf445add055d5ee67b43f4508e2221d15bea22 100644
--- a/AMDiS/src/FirstOrderTerm.h
+++ b/AMDiS/src/FirstOrderTerm.h
@@ -203,13 +203,13 @@ namespace AMDiS {
   {
   public:
     /// Constructor.
-    Vector_FOT(WorldVector<double> *wv) 
-      : FirstOrderTerm(0), b(wv) 
+    Vector_FOT(WorldVector<double> *wv, double fac_ = 1.0) 
+      : FirstOrderTerm(0), b(wv), fac(fac_)
     {}
 
     /// Constructor.
-    Vector_FOT(int bIdx) 
-      : FirstOrderTerm(0) 
+    Vector_FOT(int bIdx, double fac_ = 1.0) 
+      : FirstOrderTerm(0), fac(fac_)
     {
       bOne = bIdx;
     }
@@ -223,10 +223,10 @@ namespace AMDiS {
 
       if (bOne > -1) {
 	for (int iq = 0; iq < nPoints; iq++)
-	  lb_one(grdLambda, Lb[iq], 1.0);
+	  lb_one(grdLambda, Lb[iq], fac);
       } else {
 	for (int iq = 0; iq < nPoints; iq++)
-	  lb(grdLambda, *b, Lb[iq], 1.0);
+	  lb(grdLambda, *b, Lb[iq], fac);
       }
     }
 
@@ -238,14 +238,17 @@ namespace AMDiS {
 	      mtl::dense_vector<double>& result,
 	      double factor)
     {
-      if (num_rows(grdUhAtQP) > 0)
+      if (num_rows(grdUhAtQP) > 0) {
+	double factor_ = factor * fac;
 	for (int iq = 0; iq < nPoints; iq++)
-	  result[iq] += *b * grdUhAtQP[iq] * factor; 
+	  result[iq] += *b * grdUhAtQP[iq] * factor_;
+      }
     }
 
   protected:
     /// Vector which is multiplied with \f$ \nabla u(\vec{x}) \f$
     WorldVector<double> *b;
+    double fac;
   };
 
   /**