MPU6050 Gyro value going back to initial value irrespective of Angle

Hi,

Total Code is i'm currently trying is

#include <Wire.h>
const float GYRO_SENSITIVITY_SCALE_FACTOR = 131.0; //for 200 degrees / sec
const int MPU6050_ADDR = 0b1101000;
const byte PWR_REG_ADDR = 0x6B;
const byte GYRO_CONFIG_REG_ADDR = 0x1B;
const byte GYRO_READ_START_ADDR = 0x43;
int16_t gyroX;
float rotX;
float prevRotX=0;
unsigned long prevTime=0,currentTime;

float offsetVal;

void setup() {
 Wire.begin();
 Serial.begin(115200);
 configureMPU();

  float totalVal;
  for (int i=0; i< 20; i++){
    readGyroX();
    Serial.println(rotX);
    totalVal = totalVal + rotX;
  }//end of for
  Serial.println(totalVal);
 offsetVal = totalVal / 100;
 Serial.print("offset Val");
 Serial.println(offsetVal);
 while(1); // to check offset data
}//end of setup

void loop() {
   
  if(prevTime == 0){
    readGyroX();
    prevTime = millis(); 
  }else{
    readGyroX();
   
    currentTime = millis();
    double dt = (currentTime - prevTime)/1000.0;
    prevTime = currentTime;
    rotX =  prevRotX + (rotX-offsetVal)* dt;
    prevRotX = rotX;
    Serial.println(rotX);
  }//end of ifElse
  delay(100);
}//end of loop

void readGyroX(){
   Wire.beginTransmission(MPU6050_ADDR);
  Wire.write(GYRO_READ_START_ADDR);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU6050_ADDR,2,true);  
  gyroX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  rotX = gyroX / GYRO_SENSITIVITY_SCALE_FACTOR;
}//end of readGyroX Fcn

void configureMPU(){
  //Power Register
  Wire.beginTransmission(MPU6050_ADDR);
  Wire.write(PWR_REG_ADDR);//Access the power register
  Wire.write(0b00000000);
  Wire.endTransmission();

  //Gyro Config
  Wire.beginTransmission(MPU6050_ADDR);
  Wire.write(GYRO_CONFIG_REG_ADDR);
  Wire.write(0b00000000);
  Wire.endTransmission();
}//end of setUpMPU Fcn

while(1) is used to check offsetVal.

For some weird reason i'm getting Overflow in Serial Monitor.

-2.83
-2.75
-2.73
-2.81
-2.93
-2.97
-2.85
-2.73
-2.78
-2.85
-3.01
-2.95
-2.82
-2.77
-2.79
-2.95
-2.87
-2.80
-2.85
-2.85
ovf
offset Valovf

Edit :

  for (int i=0; i< 20; i++){
    readGyroX();
    Serial.println(rotX);
    totalVal = totalVal + rotX;
  }//end of for
  Serial.println(totalVal);
 offsetVal = totalVal / 20;

also yields same result