diff --git a/fid.m b/fid.m
index cb4600d693af73f54b06416fcc4185a8d05d722a..572ebcc400c2fa453b0e04c052aa18bb17a9adfe 100644
--- a/fid.m
+++ b/fid.m
@@ -36,6 +36,7 @@ function [rX, rY, f2] = fid(X, Y, cutoff, plotToggle)
     
     Y1(2:end) = (Y(2:end,1)-y1)./(X(2:end,1)-x1);
     Y1(1) = Y1(2);
+    Y1 = Y1/max(abs(Y1));
     
     if plotT
         figure, plot(X,Y1,'LineWidth',2);
diff --git a/fid.py b/fid.py
index 03ca8aed8a2868afb876ea94c201db7bc156d08d..218440a76a410035abfaf92017cb14b000159283 100644
--- a/fid.py
+++ b/fid.py
@@ -43,27 +43,25 @@ def fid(X,Y,cutoff = 0.01):
         Boolean indexing array, the feature selection result.
         
     """
-    try:
-        def f(x,a,b,c,d):
-            return -a/(b*x+c)+d
-        
-        x0 = X[0]; y0 = Y[0]
-        Y1 = np.zeros(len(Y))
-        for i in range(1,len(X)):
-            Y1[i] = (Y[i]-y0)/(X[i]-x0)
-        Y1[0] = Y1[1]
-        
-        
-        popt, pcov = sp.optimize.curve_fit(f,X,Y1,p0=[1,10,10,0],
-            bounds=([0,-np.inf,-np.inf,-np.inf],[np.inf,np.inf,np.inf,np.inf]))
-        Y2 = f(X,*popt)
-        
-        dY2 = Y2[-1]-Y2[0]
-        f2 = Y2 < Y2[-1] - dY2*cutoff
-        
-        rX = X[f2]
-        rY = Y[f2]
-        
-        return rX, rY, f2
-    except RuntimeError as e:
-        raise e
+    def f(x,a,b,c,d):
+        return -a/(b*x+c)+d
+    
+    x0 = X[0]; y0 = Y[0]
+    Y1 = np.zeros(len(Y))
+    for i in range(1,len(X)):
+        Y1[i] = (Y[i]-y0)/(X[i]-x0)
+    Y1[0] = Y1[1]
+    Y1 = Y1/np.max(np.abs(Y1))
+    
+    
+    popt, pcov = sp.optimize.curve_fit(f,X,Y1,p0=[1,10,10,0],
+        bounds=([0,-np.inf,-np.inf,-np.inf],[np.inf,np.inf,np.inf,np.inf]))
+    Y2 = f(X,*popt)
+    
+    dY2 = Y2[-1]-Y2[0]
+    f2 = Y2 < Y2[-1] - dY2*cutoff
+    
+    rX = X[f2]
+    rY = Y[f2]
+    
+    return rX, rY, f2