diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index e7c59f3d..43ef89df 100644
--- a/src/ipa/ipu3/algorithms/agc.cpp
+++ b/src/ipa/ipu3/algorithms/agc.cpp
@@ -42,7 +42,8 @@ static constexpr double kEvGainTarget = 0.5;
 Agc::Agc()
 	: frameCount_(0), lastFrame_(0), iqMean_(0.0), lineDuration_(0s),
 	  minExposureLines_(0), maxExposureLines_(0), filteredExposure_(0s),
-	  filteredExposureNoDg_(0s), currentExposure_(0s), currentExposureNoDg_(0s)
+	  filteredExposureNoDg_(0s), currentExposure_(0s),
+	  currentExposureNoDg_(0s), prevExposureValue_(0s)
 {
 }
 
@@ -62,6 +63,10 @@ int Agc::configure(IPAContext &context, const IPAConfigInfo &configInfo)
 		context.configuration.agc.minAnalogueGain;
 	context.frameContext.agc.exposure = minExposureLines_;
 
+	prevExposureValue_ = context.frameContext.agc.gain
+			   * context.frameContext.agc.exposure
+			   * lineDuration_;
+
 	return 0;
 }
 
@@ -147,7 +152,7 @@ void Agc::lockExposureGain(uint32_t &exposure, double &analogueGain)
 				    << " Gain " << analogueGain
 				    << " Needed ev gain " << evGain;
 
-		currentExposure_ = currentExposureNoDg_ * evGain;
+		currentExposure_ = prevExposureValue_ * evGain;
 		utils::Duration minShutterSpeed = minExposureLines_ * lineDuration_;
 		utils::Duration maxShutterSpeed = maxExposureLines_ * lineDuration_;
 
@@ -176,6 +181,16 @@ void Agc::lockExposureGain(uint32_t &exposure, double &analogueGain)
 
 		exposure = shutterTime / lineDuration_;
 		analogueGain = stepGain;
+
+		/*
+		 * Update the exposure value for the next process call.
+		 *
+		 * \todo Obtain the values of the exposure time and analog gain
+		 * that were actually used by the sensor, either from embedded
+		 * data when available, or from the delayed controls
+		 * infrastructure in case a slow down caused a mismatch.
+		 */
+		prevExposureValue_ = shutterTime * analogueGain;
 	}
 	lastFrame_ = frameCount_;
 }
diff --git a/src/ipa/ipu3/algorithms/agc.h b/src/ipa/ipu3/algorithms/agc.h
index cd26d08c..2ae88e9f 100644
--- a/src/ipa/ipu3/algorithms/agc.h
+++ b/src/ipa/ipu3/algorithms/agc.h
@@ -49,6 +49,7 @@ private:
 	utils::Duration filteredExposureNoDg_;
 	utils::Duration currentExposure_;
 	utils::Duration currentExposureNoDg_;
+	utils::Duration prevExposureValue_;
 
 	uint32_t stride_;
 };
