diff --git a/dune/elasticity/assemblers/neohookeoperatorassembler.hh b/dune/elasticity/assemblers/neohookeoperatorassembler.hh
index 192ece1f8f55cd01985dd56ec5537903da74cb79..0f1b5b0920c9bf99707fb25671f0ebf459ecc959 100644
--- a/dune/elasticity/assemblers/neohookeoperatorassembler.hh
+++ b/dune/elasticity/assemblers/neohookeoperatorassembler.hh
@@ -210,7 +210,7 @@ private:
         // the resulting matrix is skew symmetric with entries <cross,degGrad[i]>
         for (int i=0; i<dim; i++)
             for (int j=i+1; j<dim; j++) {
-                int k= (-(i+j))%dim;
+                int k= (dim-(i+j))%dim;
             res[i][j] = (cross*defGrad[k])*std::pow(-1,k);
             res[j][i] = -res[i][j];
         }
diff --git a/dune/elasticity/common/elasticityhelpers.hh b/dune/elasticity/common/elasticityhelpers.hh
index 198037324991ddec7cc6c6e2f1e32da16798df48..329ad7760011bf727f9bd2eae445f39be4d8ddb6 100644
--- a/dune/elasticity/common/elasticityhelpers.hh
+++ b/dune/elasticity/common/elasticityhelpers.hh
@@ -134,8 +134,8 @@ namespace Dune {
 
             linDet = 0;
             for (int i=0; i<2; i++)                       
-                for (int j=(i+1)%3; j<3; j++) {
-                    int k=(-(i+j))%3;
+                for (int j=i+1; j<3; j++) {
+                    int k=(3-(i+j))%3;
                     linDet[i][j] = u[j][k]*u[k][i] - u[j][i]*(1+u[k][k]);
                     linDet[j][i] = u[k][j]*u[i][k] - u[i][j]*(1+u[k][k]);
             }