Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 5609)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 5610)
@@ -292,4 +292,6 @@
       fNumHiGainSamples  = fRiseTime + fFallTime;
       fNumLoGainSamples  = fLoGainLast ? fNumHiGainSamples + 1. : 0.;
+      fNumLoGainSamples  *= 0.3;      
+
       fSqrtHiGainSamples = TMath::Sqrt(fNumHiGainSamples);
       fSqrtLoGainSamples = TMath::Sqrt(fNumLoGainSamples);
@@ -712,5 +714,4 @@
   const Byte_t *end = first + range;
   Byte_t       *p  = first;
-  Int_t  count     = 0;
 
   const Float_t pedes  = ped.GetPedestal();
@@ -724,4 +725,5 @@
   fAbMaxPos     = 0.;
   Int_t  maxpos = 0;
+  Int_t  count  = 0;
 
   //
@@ -818,4 +820,18 @@
         }
       
+      if (maxpos > range-2)
+        CalcIntegralLoGain(sum, (Float_t)range - fRiseTime - fFallTime-1., (Float_t)range - 0.001);
+      else
+        CalcIntegralLoGain(sum, 0.001, fRiseTime + fFallTime + 1.);
+
+      return;
+    }
+
+  if (maxpos < (Int_t)(fRiseTime+2.))
+    {
+      time =  IsExtractionType(kMaximum) 
+        ? (Float_t)(fLoGainFirst + maxpos) 
+        : (Float_t)(fLoGainFirst + maxpos - 1);
+
       if (maxpos > range-2)
         CalcIntegralLoGain(sum, (Float_t)range - fRiseTime - fFallTime-1., (Float_t)range - 0.001);
@@ -1041,5 +1057,5 @@
         }
 
-      time  = x + (Float_t)fLoGainFirst;
+      time  = x + (Int_t)fLoGainFirst;
       dtime = fResolution;
     }
@@ -1067,5 +1083,7 @@
         }
       CalcIntegralLoGain(sum, start, last);
-    }
+      //      *fLog << inf << time << "  " << sum << "  " << start << "  " << last << endl;
+    }
+
 }
 
@@ -1084,6 +1102,6 @@
   Int_t khi = klo+1;
 
-  Float_t up = TMath::Ceil(start);
   Float_t lo = TMath::Floor(start);
+  Float_t up = lo + 1.;
 
   const Int_t m = int((start-klo)/step);
@@ -1140,6 +1158,6 @@
   Int_t khi = klo+1;
 
-  Float_t up = TMath::Ceil(start);
   Float_t lo = TMath::Floor(start);
+  Float_t up = lo + 1.;
 
   const Int_t m = int((start-klo)/step);
@@ -1149,6 +1167,4 @@
   Float_t a = up-start;
   Float_t b = start-lo;
-
-  Int_t cnt = 0;
 
   while (1)
@@ -1173,5 +1189,4 @@
             + (b*b*b-b)*fHiGainSecondDeriv[khi];
           
-          cnt++;
         }
 
@@ -1184,4 +1199,5 @@
       b = 0.;
     }
+  
 }
 
