diff --git a/gstlal-inspiral/python/dags/layers/inspiral.py b/gstlal-inspiral/python/dags/layers/inspiral.py
index 612e460d4babaa3b0b43209cf891915b947e8d99..af79b9391761987894c51ffa6615a71abdd78486 100644
--- a/gstlal-inspiral/python/dags/layers/inspiral.py
+++ b/gstlal-inspiral/python/dags/layers/inspiral.py
@@ -198,7 +198,7 @@ def filter_layer(config, dag, ref_psd_cache, svd_bank_cache):
 	else:
 		max_concurrency = 20
 
-	num_per_group = 1 + (len(config.svd.bins) // max_concurrency)
+	num_per_group = min(1 + len(config.svd.bins) // 20, max_concurrency)
 	if num_per_group > 1:
 		common_opts.append(Option("local-frame-caching"))
 
@@ -302,7 +302,7 @@ def filter_injections_layer(config, dag, ref_psd_cache, svd_bank_cache):
 	else:
 		max_concurrency = 20
 
-	num_per_group = 1 + (len(config.svd.bins) // max_concurrency)
+	num_per_group = min(1 + len(config.svd.bins) // 20, max_concurrency)
 	if num_per_group > 1:
 		common_opts.append(Option("local-frame-caching"))