diff --git a/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp b/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp
index bdc421e6d4d856e0e7544599104d6982d9545d9c..efeb8186e0f7a7659f58f17f50c0368659a46b58 100644
--- a/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp
+++ b/apps/benchmarks/MotionSingleHeavySphere/MotionSingleHeavySphere.cpp
@@ -786,26 +786,27 @@ int main( int argc, char **argv )
    ///////////////////////////
    const int numProcs = MPIManager::instance()->numProcesses();
 
-   WALBERLA_CHECK(numProcs % 16 != 0, "An integer multiple of 16 MPI ranks has to be used due to horizontal periodicity and domain decomposition requirements!");
 
    uint_t XBlocks;
    uint_t YBlocks;
    uint_t ZBlocks;
-   if( numProcs >= 192 )
+   if( numProcs > 192 )
    {
       XBlocks = uint_t(6);
       YBlocks = uint_t(6);
       ZBlocks = uint_c(numProcs) / ( XBlocks * YBlocks );
+      WALBERLA_CHECK(numProcs % 36 == 0, "An integer multiple of 36 MPI ranks has to be used due to horizontal periodicity and domain partitioning requirements!");
    } else {
       XBlocks = uint_t(4);
       YBlocks = uint_t(4);
       ZBlocks = uint_c(MPIManager::instance()->numProcesses()) / ( XBlocks * YBlocks );
+      WALBERLA_CHECK(numProcs % 16 == 0, "An integer multiple of 16 MPI ranks has to be used due to horizontal periodicity and domain partitioning requirements!");
    }
    const uint_t XCells = xlength / XBlocks;
    const uint_t YCells = ylength / YBlocks;
    const uint_t ZCells = zlength / ZBlocks;
 
-   if( (xlength != XCells * XBlocks) && (ylength != YCells * YBlocks) && (zlength != ZCells * ZBlocks) )
+   if( (xlength != XCells * XBlocks) || (ylength != YCells * YBlocks) || (zlength != ZCells * ZBlocks) )
    {
       WALBERLA_ABORT("Domain decomposition does not fit to total domain size!");
    }