diff --git a/FunctionSpace/LocalFunctionSpace0Form.cpp b/FunctionSpace/LocalFunctionSpace0Form.cpp
index 45bc101dc7c5deb63b9440454b23077e7111c5dc..2a0a449004f9419fce67accdf87a140c86ce2555 100644
--- a/FunctionSpace/LocalFunctionSpace0Form.cpp
+++ b/FunctionSpace/LocalFunctionSpace0Form.cpp
@@ -29,11 +29,11 @@ double LocalFunctionSpace0Form::interpolate(const fullVector<double>& coef,
 					    double x, double y, double z) const{
   double res = 0;
 
-  for(int i = 0; i < size; i++){
-    fullVector<double> uv = jac->invMap(x, y);
+  fullVector<double> uv = jac->invMap(x, y);
 
+  for(int i = 0; i < size; i++)
     res += (*basis)[i].at(uv(0), uv(1), 0.0);
-  }
+  
 
   return res;
 }
diff --git a/FunctionSpace/LocalFunctionSpace1Form.cpp b/FunctionSpace/LocalFunctionSpace1Form.cpp
index 0dcd28c4c8b9181b4147a9b495827c7bbe418de5..2cc5cf9706b16d0a2f5603c25d146b1efbcc6bdb 100644
--- a/FunctionSpace/LocalFunctionSpace1Form.cpp
+++ b/FunctionSpace/LocalFunctionSpace1Form.cpp
@@ -31,14 +31,23 @@ fullVector<double> LocalFunctionSpace1Form::
 interpolate(const fullVector<double>& coef, 
 	    double x, double y, double z) const{
 
-  //double res = 0;
+  fullVector<double> res(3);
+  res(0) = 0;
+  res(1) = 0;
+  res(2) = 0;
+  
+  fullVector<double> uv = jac->invMap(x, y);
   
   for(int i = 0; i < size; i++){
-    //fullVector<double> uv = jac->invMap(x, y);
-
-    //res += (*basis)[i].at(uv(0), uv(1), 0.0);
+    res(0) += (*basis)[i][0].at(uv(0), uv(1), 0.0) * (*orient)[i];
+    res(1) += (*basis)[i][1].at(uv(0), uv(1), 0.0) * (*orient)[i];
   }
 
-  //return res;
+  fullVector<double> gradRes = jac->grad(res(0), res(1));
+  
+  res(0) = gradRes(0);
+  res(1) = gradRes(1);
+
+  return res;
 
 }