diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp
index eec77378..19f3a420 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)
 {
 }
 
@@ -58,9 +59,14 @@ int Agc::configure(IPAContext &context, const IPAConfigInfo &configInfo)
 		context.configuration.agc.minAnalogueGain;
 	context.frameContext.agc.exposure = minExposureLines_;
 
+	/* \todo replace the exposure in lines storage with time based ones */
 	minExposureLines_ = context.configuration.agc.minShutterSpeed / lineDuration_;
 	maxExposureLines_ = context.configuration.agc.maxShutterSpeed / lineDuration_;
 
+	prevExposureValue_ = context.frameContext.agc.gain
+			   * context.frameContext.agc.exposure
+			   * lineDuration_;
+
 	return 0;
 }
 
@@ -146,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_;
 
@@ -175,6 +181,9 @@ void Agc::lockExposureGain(uint32_t &exposure, double &analogueGain)
 
 		exposure = shutterTime / lineDuration_;
 		analogueGain = stepGain;
+
+		/* Update the exposure value for the next process call */
+		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_;
 };
