diff --git a/cosserat-continuum.cc b/cosserat-continuum.cc
index 392d6f9f9e5306f8426c314eb420b75d7781de34..127ebb6bb7de63a7982dd34b3f0c717f735d51b4 100644
--- a/cosserat-continuum.cc
+++ b/cosserat-continuum.cc
@@ -140,9 +140,13 @@ int main (int argc, char *argv[]) try
     allNodes.setAll();
     LeafBoundaryPatch<GridType> dirichletBoundary(grid, allNodes);
 
-    BitSetVector<blocksize> dirichletNodes(grid.size(dim));
-    for (int i=0; i<dirichletNodes.size(); i++)
-        dirichletNodes[i] = dirichletBoundary.containsVertex(i);
+    BitSetVector<blocksize> dirichletNodes(grid.size(dim), false);
+    for (int i=0; i<dirichletNodes.size(); i++) {
+        // Only translation dofs are Dirichlet
+        if (dirichletBoundary.containsVertex(i))
+            for (int j=0; j<3; j++)
+                dirichletNodes[i][j] = true;
+    }
     
     // //////////////////////////
     //   Initial solution