diff --git a/PeakOTron.py b/PeakOTron.py
index 0a60dd4ace8b5598b4d7247eabdbfa873daf0127..886a24cc9ae6a6cb0f2fe5724687047e405d7787 100644
--- a/PeakOTron.py
+++ b/PeakOTron.py
@@ -279,14 +279,15 @@ class PeakOTron:
                 "r_fast":None,
                 "tgate":None,
                 "pedestal":None,
+                "truncate":False,
                 "n_bootstrap": 1000,
                 "n_bootstrap_kde":100,
                 "bw":None,
                 "peak_dist_factor":0.8,
                 "peak_width_factor":0.5,
                 "peak_ppf":0.95,
-                "prominence": 0.0,
-                "min_n_peak_evts": 100,
+                "peak_prominence": 0.0,
+                "peak_min_n_evts": 100,
                 "kernel_kde":"gaussian",
                 "bandwidth_kde":"ISJ",
                 "ppf_mainfit":1 - 1e-6,
@@ -1294,14 +1295,15 @@ class PeakOTron:
                         peak_dist_factor,
                         peak_width_factor,
                         peak_ppf,
+                        peak_prominence,
+                        peak_min_n_evts,
+                        truncate,
                         pedestal,
-                        prominence,
                         bin_method,
                         n_bootstrap,
                         n_bootstrap_kde,
                         bandwidth_kde,
-                        kernel_kde,
-                        min_n_peak_evts):
+                        kernel_kde):
         
  
         self.scaler = RobustScaler()
@@ -1412,33 +1414,47 @@ class PeakOTron:
         est_gain_lin = abs(f_lin_kde_s(est_gain) - f_lin_kde_s(0))
         
         
-        peaks, properties = find_peaks(y_kde_s,
-                                       distance=peak_dist_factor*est_gain_lin,
-                                       prominence=prominence
-                                      )
-        
-
+        limit_s = pedestal_s - 0.5*est_gain
+        limit = limit_s*self.scaler.scale_[0] + self.scaler.center_[0]
         
+        if(truncate):
+            
+            cond_limit = (x>limit)
+            cond_limit_s = (x_s>limit_s)
+            cond_limit_kde_s = (x_kde_s>limit_s)
         
-        if(len(peaks)<3):
-            if(self._verbose):
-                print("Not enough peaks found with distance criterion to fit. Removing distance criterion and finding all peaks...")
+            x = x[cond_limit]
+            y = y[cond_limit]
+            y_err = y_err[cond_limit]
             
-            peaks, properties = find_peaks(y_kde_s,
-                                       prominence=prominence
-                                      )
+            x_s = x_s[cond_limit_s]
+            y_s = y_s[cond_limit_s]
+            y_err_s = y_err_s[cond_limit_s]
             
+            x_kde_s = x_kde_s[cond_limit_kde_s]
+            y_kde_s = y_kde_s[cond_limit_kde_s]
+            y_kde_err_s =  y_kde_err_s[cond_limit_kde_s]
             
-        limit_s = pedestal_s - 0.5*est_gain
-        limit = pedestal - 0.5*est_gain*self.scaler.scale_[0]
-        cond_limit_s = (x_kde_s[peaks]>limit_s)
-        if(sum(cond_limit_s)<3):
             if(self._verbose):
-                print("No peaks observed above pedestal - gain/2. Continuing without thresholding...")
-        else:
-            peaks = peaks[cond_limit_s]
-                
+                print("Truncated distributions to only fit PH > pedestal - statistical gain/2 ...")
                 
+            
+        
+        
+        peaks, properties = find_peaks(y_kde_s,
+                                       distance=peak_dist_factor*est_gain_lin,
+                                       prominence=peak_prominence
+                                      )
+        
+    
+       
+        
+        if(len(peaks)<3):
+            print("Not enough peaks found with current distance criterion to fit. Setting fit fail status and continuing..")
+            self._failed=True
+            return
+        
+                  
   
         
         x_peaks_s = x_kde_s[peaks]
@@ -1471,16 +1487,16 @@ class PeakOTron:
             
             N_evt_peak = len(self.SelectRange(data_s, x_peak-x_width/2, x_peak+x_width/2))
       
-            if(x_i>peak_threshold and N_evt_peak<min_n_peak_evts):
+            if(x_i>peak_threshold and N_evt_peak<peak_min_n_evts):
                 if(self._verbose):
                     print("Peak {:d} has {:d} events. Less than event threshold {:d}. Ignoring...".format(x_i,
                                                                                                 N_evt_peak,
-                                                                                                min_n_peak_evts))
+                                                                                                peak_min_n_evts))
             else:
                 if(self._verbose):
                     print("Peak {:d} has {:d} events. Adding...".format(x_i,
                                                                               N_evt_peak,
-                                                                              min_n_peak_evts))
+                                                                              peak_min_n_evts))
                 
                 self._peak_data["x_peak_s"].append(x_peak)
                 self._peak_data["y_peak_s"].append(y_peak)
@@ -1498,7 +1514,7 @@ class PeakOTron:
         self._peak_data["x_width_s"] = np.asarray(self._peak_data["x_width_s"])
         
         if(n_valid_peaks<3):
-            print("Minimum 3 peaks covering a threshold {0} events required. Too few events in peaks to proceed. Setting fit fail status and continuing...".format(min_n_peak_evts))
+            print("Minimum 3 peaks covering a threshold {0} events required. Too few events in peaks to proceed. Setting fit fail status and continuing...".format(peak_min_n_evts))
             self._failed = True
             return
         
@@ -2001,8 +2017,9 @@ class PeakOTron:
                 peak_dist_factor,
                 peak_width_factor,
                 peak_ppf,
-                prominence,
-                min_n_peak_evts,
+                peak_prominence,
+                peak_min_n_evts,
+                truncate,
                 kernel_kde,
                 bandwidth_kde,
                 ppf_mainfit,
@@ -2021,19 +2038,21 @@ class PeakOTron:
             if(self._verbose):
                 print("Getting histogram and peak values...")
                 
-            self.GetHistAndPeaks(data,
+            self.GetHistAndPeaks(
+                        data,
                         bw,
                         peak_dist_factor,
                         peak_width_factor,
                         peak_ppf,
+                        peak_prominence,
+                        peak_min_n_evts,
+                        truncate,
                         pedestal,
-                        prominence,
                         bin_method,
                         n_bootstrap,
                         n_bootstrap_kde,
                         bandwidth_kde,
-                        kernel_kde,
-                        min_n_peak_evts)
+                        kernel_kde)
 
         if(not self._failed):
             if(self._verbose):