diff --git a/src/threadpool.c b/src/threadpool.c
index 0ef69f9895d3d127a330b105ec385d97975fc82f..9a29faab652077c3c0730d81c28d345c4fbece09 100644
--- a/src/threadpool.c
+++ b/src/threadpool.c
@@ -252,7 +252,7 @@ void threadpool_init(struct threadpool *tp, int num_threads) {
  * @param N Number of elements in @c map_data.
  * @param stride Size, in bytes, of each element of @c map_data.
  * @param chunk Number of map data elements to pass to the function at a time,
- *        or zero to choose the number automatically.
+ *        or #threadpool_auto_chunk_size to choose the number automatically.
  * @param extra_data Addtitional pointer that will be passed to the mapping
  *        function, may contain additional data.
  */
@@ -278,10 +278,8 @@ void threadpool_map(struct threadpool *tp, threadpool_map_function map_function,
   tp->map_data_stride = stride;
   tp->map_data_size = N;
   tp->map_data_count = 0;
-  tp->map_data_chunk =
-      chunk ? chunk
-            : max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)),
-                  1);
+  tp->map_data_chunk = (chunk == threadpool_auto_chunk_size) ? 
+    max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)), 1) : chunk;
   tp->map_function = map_function;
   tp->map_data = map_data;
   tp->map_extra_data = extra_data;
diff --git a/src/threadpool.h b/src/threadpool.h
index 9d19b56836330f59093933bbed5900727142f4a2..a4964ffcbb387a1e3930c3ba172cd783dd6e8123 100644
--- a/src/threadpool.h
+++ b/src/threadpool.h
@@ -32,6 +32,7 @@
 /* Local defines. */
 #define threadpool_log_initial_size 1000
 #define threadpool_default_chunk_ratio 7
+#define threadpool_auto_chunk_size 0
 
 /* Function type for mappings. */
 typedef void (*threadpool_map_function)(void *map_data, int num_elements,