diff --git a/AMDiS/src/ProblemVec.cc b/AMDiS/src/ProblemVec.cc
index a4fbd4c6f59dcce4bbf2248f51fa88bb12c95a30..b8b8249d7458e87aa4f3e40d1da14fa265da6d09 100644
--- a/AMDiS/src/ProblemVec.cc
+++ b/AMDiS/src/ProblemVec.cc
@@ -760,14 +760,14 @@ namespace AMDiS {
 	  ERROR_EXIT("Not yet implemented!\n");
 	}
 
-	// TODO: ExitMatrix should be called after finishInsertion!
- 	if (assembleMatrix && matrix->getBoundaryManager())
- 	  matrix->getBoundaryManager()->exitMatrix(matrix);	  
-	
 	assembledMatrix[i][j] = true;
 
 	if (assembleMatrix)
 	  matrix->finishInsertion();
+
+	// TODO: ExitMatrix should be called after finishInsertion!
+ 	if (assembleMatrix && matrix->getBoundaryManager())
+ 	  matrix->getBoundaryManager()->exitMatrix(matrix);	  
 	
 	if (matrix)
 	  nnz += matrix->getBaseMatrix().nnz();
@@ -966,7 +966,7 @@ namespace AMDiS {
     if (systemMatrix && (*systemMatrix)[row][col]) 
       (*systemMatrix)[row][col]->getBoundaryManager()->addBoundaryCondition(periodic);
 
-    if (rhs) 
+    if (rhs && row == col) 
       rhs->getDOFVector(row)->getBoundaryManager()->addBoundaryCondition(periodic);
   }