diff --git a/src/isdb/CS2Backbone.cpp b/src/isdb/CS2Backbone.cpp
index d7f2d8acb5f9665442150e08eab058877d48b0ca..d6527120e455fdbd31ff50f454cd741f5559f16e 100644
--- a/src/isdb/CS2Backbone.cpp
+++ b/src/isdb/CS2Backbone.cpp
@@ -981,12 +981,12 @@ void CS2Backbone::calculate()
   }
 
   unsigned nt=OpenMP::getNumThreads();
-  if(nt*stride*10>chemicalshifts.size()) nt=1;
+  if(nt*stride*2>chemicalshifts.size()) nt=1;
 
   // a single loop over all chemical shifts
   #pragma omp parallel num_threads(nt)
   {
-    #pragma omp for
+    #pragma omp for schedule(dynamic)
     for(unsigned cs=rank; cs<chemicalshifts.size(); cs+=stride) {
       const unsigned kdx=cs*max_cs_atoms;
       const ChemicalShift *myfrag = &chemicalshifts[cs];