diff --git a/src/ipa/rpi/controller/histogram.cpp b/src/ipa/rpi/controller/histogram.cpp
index 16a9207f..0a27ba2c 100644
--- a/src/ipa/rpi/controller/histogram.cpp
+++ b/src/ipa/rpi/controller/histogram.cpp
@@ -45,20 +45,26 @@ double Histogram::quantile(double q, int first, int last) const
 	return first + frac;
 }
 
-double Histogram::interQuantileMean(double qLo, double qHi) const
+double Histogram::interBinMean(double binLo, double binHi) const
 {
-	assert(qHi > qLo);
-	double pLo = quantile(qLo);
-	double pHi = quantile(qHi, (int)pLo);
+	assert(binHi > binLo);
 	double sumBinFreq = 0, cumulFreq = 0;
-	for (double pNext = floor(pLo) + 1.0; pNext <= ceil(pHi);
-	     pLo = pNext, pNext += 1.0) {
-		int bin = floor(pLo);
+	for (double binNext = floor(binLo) + 1.0; binNext <= ceil(binHi);
+	     binLo = binNext, binNext += 1.0) {
+		int bin = floor(binLo);
 		double freq = (cumulative_[bin + 1] - cumulative_[bin]) *
-			      (std::min(pNext, pHi) - pLo);
+			      (std::min(binNext, binHi) - binLo);
 		sumBinFreq += bin * freq;
 		cumulFreq += freq;
 	}
 	/* add 0.5 to give an average for bin mid-points */
 	return sumBinFreq / cumulFreq + 0.5;
 }
+
+double Histogram::interQuantileMean(double qLo, double qHi) const
+{
+	assert(qHi > qLo);
+	double pLo = quantile(qLo);
+	double pHi = quantile(qHi, (int)pLo);
+	return interBinMean(pLo, pHi);
+}
diff --git a/src/ipa/rpi/controller/histogram.h b/src/ipa/rpi/controller/histogram.h
index 6b3e3a9e..e2c5509b 100644
--- a/src/ipa/rpi/controller/histogram.h
+++ b/src/ipa/rpi/controller/histogram.h
@@ -38,6 +38,8 @@ public:
 	uint64_t total() const { return cumulative_[cumulative_.size() - 1]; }
 	/* Cumulative frequency up to a (fractional) point in a bin. */
 	uint64_t cumulativeFreq(double bin) const;
+	/* Return the mean value between two (fractional) bins. */
+	double interBinMean(double binLo, double binHi) const;
 	/*
 	 * Return the (fractional) bin of the point q (0 <= q <= 1) through the
 	 * histogram. Optionally provide limits to help.
