diff --git a/fio.h b/fio.h
index a6adcb7..e1b35ea 100644
--- a/fio.h
+++ b/fio.h
@@ -635,7 +635,6 @@
 extern void setup_log(struct io_log **);
 extern void finish_log(struct thread_data *, struct io_log *, const char *);
 extern void __finish_log(struct io_log *, const char *);
-extern int setup_rate(struct thread_data *);
 extern struct io_log *agg_io_log[2];
 extern int write_bw_log;
 extern void add_agg_sample(unsigned long, enum fio_ddir);
diff --git a/init.c b/init.c
index 15e96aa..b044e28 100644
--- a/init.c
+++ b/init.c
@@ -131,6 +131,38 @@
 	thread_number--;
 }
 
+static int setup_rate(struct thread_data *td)
+{
+	unsigned long nr_reads_per_msec;
+	unsigned long long rate;
+	unsigned int bs;
+
+	if (!td->rate && !td->rate_iops)
+		return 0;
+
+	if (td_rw(td))
+		bs = td->rw_min_bs;
+	else if (td_read(td))
+		bs = td->min_bs[DDIR_READ];
+	else
+		bs = td->min_bs[DDIR_WRITE];
+
+	if (td->rate) {
+		rate = td->rate;
+		nr_reads_per_msec = (rate * 1024 * 1000LL) / bs;
+	} else
+		nr_reads_per_msec = td->rate_iops * 1000UL;
+
+	if (!nr_reads_per_msec) {
+		log_err("rate lower than supported\n");
+		return -1;
+	}
+
+	td->rate_usec_cycle = 1000000000ULL / nr_reads_per_msec;
+	td->rate_pending_usleep = 0;
+	return 0;
+}
+
 /*
  * Lazy way of fixing up options that depend on each other. We could also
  * define option callback handlers, but this is easier.
diff --git a/log.c b/log.c
index df2edc6..298716b 100644
--- a/log.c
+++ b/log.c
@@ -183,38 +183,6 @@
 	return ret;
 }
 
-int setup_rate(struct thread_data *td)
-{
-	unsigned long long rate;
-	int nr_reads_per_msec;
-	unsigned int bs;
-
-	if (!td->rate && !td->rate_iops)
-		return 0;
-
-	if (td_rw(td))
-		bs = td->rw_min_bs;
-	else if (td_read(td))
-		bs = td->min_bs[DDIR_READ];
-	else
-		bs = td->min_bs[DDIR_WRITE];
-
-	if (td->rate) {
-		rate = td->rate;
-		nr_reads_per_msec = (rate * 1024 * 1000) / bs;
-	} else
-		nr_reads_per_msec = td->rate_iops * 1000;
-
-	if (!nr_reads_per_msec) {
-		log_err("rate lower than supported\n");
-		return -1;
-	}
-
-	td->rate_usec_cycle = 1000000000ULL / nr_reads_per_msec;
-	td->rate_pending_usleep = 0;
-	return 0;
-}
-
 void setup_log(struct io_log **log)
 {
 	struct io_log *l = malloc(sizeof(*l));
