diff --git a/ohmpi.py b/ohmpi.py
index 5677d3ebeacc7b3e922f2c51fbaed79a690d61ca..1c974f9598574ae940152288c789b2636e385341 100644
--- a/ohmpi.py
+++ b/ohmpi.py
@@ -868,7 +868,7 @@ class OhmPi(object):
 
                     # compute autogain
                     gain_voltage_tmp, gain_current_tmp = [], []
-                    for n in [0,1]:
+                    for n in [0,1]:  # make short cycle for gain computation
                         if n == 0:
                             self.pin0.value = True
                             self.pin1.value = False
@@ -881,11 +881,7 @@ class OhmPi(object):
                                 self.pin6.value = True # IHM current injection led on
 
                         time.sleep(injection_duration)
-                        gain_current_tmp.append(self._gain_auto(AnalogIn(self.ads_current, ads.P0)))
-                        # gain_voltage_dict = {'P0': self._gain_auto(AnalogIn(self.ads_voltage, ads.P0)),
-                        #                      'P2': self._gain_auto(AnalogIn(self.ads_voltage, ads.P2)),
-                        #                      "polarity": polarity}
-                        # TODO: separate gain for PO and P2
+                        gain_current = self._gain_auto(AnalogIn(self.ads_current, ads.P0))
                         if polarity > 0:
                             gain_voltage_tmp.append(self._gain_auto(AnalogIn(self.ads_voltage, ads.P0)))
                         else:
@@ -895,13 +891,10 @@ class OhmPi(object):
                         if self.board_version == 'mb.2023.0.0':
                             self.pin6.value = False # IHM current injection led off
 
-                    gain_voltage = np.min(gain_voltage_tmp)
-                    gain_current = np.min(gain_current_tmp)
                     self.exec_logger.debug(f'Gain current: {gain_current:.3f}, gain voltage: {gain_voltage:.3f}')
                     self.ads_current = ads.ADS1115(self.i2c, gain=gain_current, data_rate=860,
                                                 address=self.ads_current_address, mode=0)
-                    self.ads_voltage = ads.ADS1115(self.i2c, gain=gain_voltage, data_rate=860,
-                                                address=self.ads_voltage_address, mode=0)
+
                 else :
                     gain_current = 2 / 3
                     gain_voltage = 2 / 3
@@ -935,13 +928,18 @@ class OhmPi(object):
                     if (n % 2) == 0:
                         self.pin0.value = True
                         self.pin1.value = False
-                        self.pin6.value = True# IHM current injection led on
+                        if autogain: # select gain computed on first half cycle
+                            self.ads_voltage = ads.ADS1115(self.i2c, gain=gain_voltage[0], data_rate=860,
+                                                           address=self.ads_voltage_address, mode=0)
                     else:
                         self.pin0.value = False
                         self.pin1.value = True  # current injection nr2
-                        self.pin6.value = True# IHM current injection led on
+                        if autogain: # select gain computed on first half cycle
+                            self.ads_voltage = ads.ADS1115(self.i2c, gain=gain_voltage[0], data_rate=860,
+                                                           address=self.ads_voltage_address, mode=0)
                     self.exec_logger.debug(f'Stack {n} {self.pin0.value} {self.pin1.value}')
-
+                    if self.board_version == 'mb.2023.0.0':
+                        self.pin6.value = True  # IHM current injection led on
                     # measurement of current i and voltage u during injection
                     meas = np.zeros((self.nb_samples, 3)) * np.nan
                     start_delay = time.time()  # stating measurement time
@@ -963,10 +961,8 @@ class OhmPi(object):
                         dt = time.time() - start_delay  # real injection time (s)
                         meas[k, 2] = time.time() - start_time
                         if dt > (injection_duration - 0 * sampling_interval / 1000.):
-
                             break
 
-
                     # stop current injection
                     self.pin0.value = False
                     self.pin1.value = False