diff --git a/PeakOTron.py b/PeakOTron.py
index 0731dcd172bc79be238616b3a7137fa7d3f692b1..04cc17e1e29d79775213c3a78d586388134cd62e 100644
--- a/PeakOTron.py
+++ b/PeakOTron.py
@@ -60,11 +60,13 @@ class BandWidthOptimiser:
         try:
             x_kde, y_kde = FFTKDE(kernel = self.kernel, bw=bw).fit(self.data).evaluate(self.n_kde_samples)
         
-            loss = np.log((self.N-1)*bw) - np.sum(np.log(y_kde)) 
+            loss = np.log((self.N-1)*bw) - np.sum(np.log(y_kde))
             
-            return loss
         except:
-            return np.nan
+            
+            loss = np.log((self.N-1)*bw) + self.eps_inv
+            
+        return loss
         
     def _PPF(self, data):
         """ Compute ECDF """
@@ -89,6 +91,7 @@ class BandWidthOptimiser:
         self.last_arg = None
         self.func_code = FakeFuncCode(self._Dummy, dock=True)
         self.eps = np.finfo(np.float64).eps * 10
+        self.eps_inv = 1/self.eps
         
 
     def __call__(self, *arg):
@@ -493,14 +496,9 @@ class PeakOTron:
                 minuit_kde.migrad(ncall= self._n_call_minuit,
                            iterate =self._n_iterations_minuit)
 
-                if(minuit_kde.valid):
-                    bw = minuit_kde.values["bw"]
-                    if(self._verbose):
-                        print("KDE Bandwidth optimised to: {0}".format(bw))
-                else:
-                    if(self._verbose):
-                        print("KDE Bandwidth optimisation failed. Defaulting to Improved Sheather Jones.")
-                    bw = "ISJ"
+                bw = minuit_kde.values["bw"]
+                if(self._verbose):
+                    print("KDE Bandwidth optimised to: {0}".format(bw))
             except:
                 if(self._verbose):
                     print("KDE Bandwidth optimisation failed. Defaulting to Improved Sheather Jones.")