     static my_helpers::Circular<az_t , READINGS_AMOUNT_AVR> az(0);
     static my_helpers::Circular<az_t , READINGS_AMOUNT_AVR> el(0);
 
+    static my_helpers::Circular<az_t , 30> az_drift(0);
+
     const static float lightSens = radians(LCD_BACK_LIGHT_SENS_DEGREE);
     // if programming failed, don't try to do anything
     if (!dmpReady) return;
 
-    while (sensorDataReady)
+    if (sensorDataReady)
         readSensor(az, el);
 
 

                {
                    if (msg.message.Command == 'C') //clear errors
                    {
                        az.setError(0);
                        el.setError(0);


                        auto ct = (counter % 2);
                        ++counter;

                        settvals[ct + 0] = azm;
                        settvals[ct + 1] = elm;

                        sensvals[ct + 0] = az;
                        sensvals[ct + 1] = el;

                        //not sure, this error will include human's "bad eye" centering ... possibly it's bad idea to use
                        if (ct)
                        {
                            //have both stars defined
                            auto div = settvals[2] - settvals[0];
                            if (!my_helpers::isZero(div))
                            {
                                az_t err = 1 - (sensvals[2] - sensvals[0]) / div;
                                az.setError(err);
                            }
                            div = settvals[2] - settvals[0];
                            if (!my_helpers::isZero(div))
                            {
                                az_t err = 1 - (sensvals[3] - sensvals[1]) / div;
                                el.setError(err);
                            }
                        }
                        else
                        {
                            az0 = sensvals[0] - azm;
                            el0 = sensvals[1] - elm;
                            az.setError(0);
                            el.setError(0);
                            timeElapsed = 0;
                            az.clear(azm);
                            el.clear(elm);
                        }

                        continue;
                    }

