Index: /trunk/FACT++/src/smartfact.cc
===================================================================
--- /trunk/FACT++/src/smartfact.cc	(revision 17519)
+++ /trunk/FACT++/src/smartfact.cc	(revision 17520)
@@ -1632,9 +1632,13 @@
 
             max[idx] += v/4;
-        } */
-
-        vector<float> max(1440);
+            } */
+
+        vector<float> val(1440);
         for (int i=0; i<1440; i++)
-            max[i] = dat[i%9==8 ? i-2 : i]/1000;
+            val[i] = dat[i%9==8 ? i-2 : i]/1000;
+
+        vector<float> sorted(val);
+        nth_element(sorted.begin(), sorted.begin()+3, sorted.end(),
+                    std::greater<float>());
 
         const uint32_t trig = d.GetQoS() & FAD::EventHeader::kLPext;
@@ -1645,6 +1649,8 @@
         if (trig&FAD::EventHeader::kLPext)
             scale = 1;
-        if (trig==0 || (trig&FAD::EventHeader::kPedestal))
+        if (trig&FAD::EventHeader::kPedestal)
             scale = 0.25;
+        if (trig==0)
+            scale = max(0.25f, sorted[3]);
 
         // assume it is drs-gain
@@ -1652,5 +1658,5 @@
         //    min = 0.75;
 
-        WriteCam(d, "cam-fadcontrol-eventdata", max, scale, min);
+        WriteCam(d, "cam-fadcontrol-eventdata", val, scale, min);
 
         return GetCurrentState();
@@ -2511,6 +2517,6 @@
                            "Average camera humidity exceed 60%");
 
-        newerr |= SetError(!fMagicWeatherHist[kHum].empty() && fMagicWeatherHist[kHum].back()>98 && data_taking,
-                           "Outside humidity exceeds 98% during data-taking");
+        newerr |= SetError(!fMagicWeatherHist[kHum].empty() && fMagicWeatherHist[kHum].back()>98 && fDimLidControl.state()==Lid::State::kOpen,
+                           "Outside humidity exceeds 98% while lid is open");
         newerr |= SetError(!fMagicWeatherHist[kGusts].empty() && fMagicWeatherHist[kGusts].back()>50 && (fDimDriveControl.state()==Drive::State::kTracking||fDimDriveControl.state()==Drive::State::kOnTrack),
                            "Wind gusts exceed 50km/h during tracking");
@@ -2844,6 +2850,6 @@
             }
 
-            if (fDimBiasControl.state()==BIAS::State::kVoltageOn)
-                out << " (" << fFtmPatchThresholdMed << ')';
+            if (bias_on)
+                out << " (" << setprecision(4) << fFtmPatchThresholdMed << ')';
             out << '\n';
         }
@@ -2859,5 +2865,5 @@
 
             string col = fBiasControlVoltageMed>3?HTML::kGreen:HTML::kWhite;
-            if (!fDimBiasControl.state()==BIAS::State::kVoltageOn)
+            if (bias_on)
             {
                 if (fBiasControlCurrentMed>70 || fBiasControlCurrentMax>90)
@@ -2889,5 +2895,5 @@
                 out << col << '\t';
                 out << setprecision(fBiasControlCurrentMed<100?2:3);
-                out << (bias_off ? 0 : fBiasControlCurrentMed) << '\t';
+                out << (bias_off ? 0 : (fBiasControlCurrentMed<10?fBiasControlCurrentMed:floor(fBiasControlCurrentMed))) << '\t';
                 if (bias_oc)
                     out << "(OC) ";
@@ -2897,5 +2903,5 @@
                     {
                         out << setprecision(fBiasControlCurrentMax<100?2:3);
-                        out << (bias_off ? 0 : fBiasControlCurrentMax);
+                        out << (bias_off ? 0 : (fBiasControlCurrentMax<10?fBiasControlCurrentMax:floor(fBiasControlCurrentMax)));
                     }
                     else
@@ -2903,10 +2909,9 @@
                 }
                 out << '\t';
-                out << setprecision(3);
             }
             if (cal && fDimFeedback.state()!=Feedback::State::kCalibrating)
-                out << setprecision(2) << fBiasControlPowerTot << " W" << setprecision(3);
+                out << setprecision(2) << fBiasControlPowerTot << " W";
             else
-                out << (bias_off ? 0 : fBiasControlVoltageMed) << " V";
+                out << setprecision(3) << (bias_off ? 0 : fBiasControlVoltageMed) << " V";
             out << '\n';
         }
