diff --git a/AMDiS/src/reinit/HL_SignedDistTraverse.cc b/AMDiS/src/reinit/HL_SignedDistTraverse.cc
index 278818b1b1821dcc86e41ccc12bc2d6e3d37be86..546067e7fa5dd16bdec37c5b9b993e2e0b6cf848 100644
--- a/AMDiS/src/reinit/HL_SignedDistTraverse.cc
+++ b/AMDiS/src/reinit/HL_SignedDistTraverse.cc
@@ -112,7 +112,10 @@ void HL_SignedDistTraverse::initializeBoundary()
   
 #ifdef HAVE_PARALLEL_DOMAIN_AMDIS
   // In parallel AMDiS synchronize the bound_DOF DOFVector with the max-assigner and the sD_DOF DOFVector with the min-assigner
-  AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*bound_DOF, max_assigner());
+  if (velExt)
+    AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*bound_DOF, velExt->getAllDOFVectorsForSynchronization(), max_assigner());
+  else
+    AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*bound_DOF, max_assigner());
   AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
 #endif
 }
@@ -131,7 +134,10 @@ void HL_SignedDistTraverse::HL_updateIteration()
   
 #ifdef HAVE_PARALLEL_DOMAIN_AMDIS
   // Update sDOld_DOF on interior domain boundaries
-  AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sDOld_DOF, min_to_zero_assigner());
+  if (velExt)
+    AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*sDOld_DOF, velExt->getAllDOFVectorsForSynchronization(), min_to_zero_assigner());
+  else
+    AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sDOld_DOF, min_to_zero_assigner());
 #endif  
   
   // ===== Gauss-Seidel or Jacobi iteration ? =====
@@ -160,7 +166,10 @@ void HL_SignedDistTraverse::HL_updateIteration()
     
 #ifdef HAVE_PARALLEL_DOMAIN_AMDIS
     // Update sD_DOF on interior domain boundaries
-    AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
+    if (velExt)
+      AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVectorSameWay(*sD_DOF, velExt->getAllDOFVectorsForSynchronization(), min_to_zero_assigner());
+    else
+      AMDiS::Parallel::MeshDistributor::globalMeshDistributor->synchVector(*sD_DOF, min_to_zero_assigner());
 #endif    
     
     // ===== Is tolerance reached ? =====
diff --git a/AMDiS/src/reinit/VelocityExt.h b/AMDiS/src/reinit/VelocityExt.h
index 0d6d50e358f1b005fa266299859d55cfca9d9b59..bfa04bf63c47ae0f3f4263d0010bf46bb6916562 100644
--- a/AMDiS/src/reinit/VelocityExt.h
+++ b/AMDiS/src/reinit/VelocityExt.h
@@ -230,6 +230,18 @@ public:
 
   /// Swaps two vertices in the permutation.
   void swapVertices(int i1, int i2);
+  
+#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
+  std::vector<DOFVector<double> *> getAllDOFVectorsForSynchronization() {
+	std::vector<DOFVector<double> *> ret;
+	ret.reserve(velDOF.size() + origVelDOF.size());
+	for ( std::vector<DOFVector<double>*>::iterator it = velDOF.begin() ; it != velDOF.end() ; ++it )
+		ret.push_back(*it);
+	for ( std::vector<DOFVector<double>*>::iterator it = origVelDOF.begin() ; it != origVelDOF.end() ; ++it )
+		ret.push_back(*it);
+	return ret;
+  }
+#endif
 
  protected:
   /// Original velocity vector.