diff --git a/src/geometry/initializer/BoundarySetterFlagFieldSpecialization.h b/src/geometry/initializer/BoundarySetterFlagFieldSpecialization.h
index 8e3ee37ee0f2b342a12e7a11e3c5f123be50f4c6..e154678f0afb0392184d144a8ebe98389cf6bde4 100644
--- a/src/geometry/initializer/BoundarySetterFlagFieldSpecialization.h
+++ b/src/geometry/initializer/BoundarySetterFlagFieldSpecialization.h
@@ -136,22 +136,30 @@ namespace initializer {
    template<typename Flag_T>
    void BoundarySetter<FlagField<Flag_T>>::set( cell_idx_t x, cell_idx_t y, cell_idx_t z )
    {
-      flagField_->addFlag( x, y, z, flag_ );
+      //Check if no flag is set yet to avoid multiple flags per cell on initialization
+      if(flagField_->get(x,y,z) == Flag_T(0))
+         flagField_->addFlag( x, y, z, flag_ );
    }
 
    template<typename Flag_T>
    void BoundarySetter<FlagField<Flag_T>>::set( const CellInterval & ci )
    {
-      for( auto it = flagField_->beginSliceXYZ(ci); it != flagField_->end(); ++it )
-         field::addFlag(it, flag_);
+      for( auto it = flagField_->beginSliceXYZ(ci); it != flagField_->end(); ++it ) {
+         //Check if no flag is set yet to avoid multiple flags per cell on initialization
+         if(*it == Flag_T(0))
+            field::addFlag(it, flag_);
+      }
    }
 
    template<typename Flag_T>
    template< typename CellIterator >
    void BoundarySetter<FlagField<Flag_T> >::set( const CellIterator & begin, const CellIterator & end )
    {
-      for(auto it = begin; it != end; ++it)
-         flagField_->addFlag(it->x(), it->y(), it->z(), flag_);
+      for(auto it = begin; it != end; ++it) {
+         //Check if no flag is set yet to avoid multiple flags per cell on initialization
+         if(flagField_->get(it->x(),it->y(),it->z()) == Flag_T(0))
+            flagField_->addFlag(it->x(), it->y(), it->z(), flag_);
+      }
    }
 
 } // namespace initializer