diff --git a/wetb/signal/filters/_despike.py b/wetb/signal/filters/_despike.py
index 7fda9e33462d907b229b3339c87a98d0197d0359..bdeb845295b753dae6445e753cb9a3485259167d 100644
--- a/wetb/signal/filters/_despike.py
+++ b/wetb/signal/filters/_despike.py
@@ -4,7 +4,7 @@ Created on 13/07/2016
 @author: MMPE
 '''
 import numpy as np
-from wetb.signal.filters import replacer, frq_filters
+from wetb.signal.filters import replacer
 
 
 replace_by_nan = replacer.replace_by_nan
@@ -62,7 +62,8 @@ def despike(data, spike_length, spike_finder=univeral_thresshold_finder, spike_r
     if plt:
         plt.plot(data, label='Input')
     data = np.array(data).copy()
-    lp_data = low_pass(data, spike_length, 1)
+    from wetb.signal.filters import frq_filters
+    lp_data = frq_filters.low_pass(data, spike_length, 1)
     hp_data = data - lp_data
     hp_data = frq_filters.high_pass(data, spike_length*4, 1, order=2)
         #spike_length, sample_frq/2, 1, order=1)
diff --git a/wetb/signal/filters/first_order.py b/wetb/signal/filters/first_order.py
index 3b5824bd3117e24b4180a075e6d8195f5dcda68c..7d10ba70706dbf17158bcecc8ad44c06b29ea21c 100644
--- a/wetb/signal/filters/first_order.py
+++ b/wetb/signal/filters/first_order.py
@@ -4,13 +4,16 @@ Created on 10/01/2015
 @author: mmpe
 '''
 import numpy as np
-from wetb.signal.filters import cy_filters
 
 def low_pass(input, delta_t, tau, method=1):
+    from wetb.signal.filters import cy_filters
+
     if isinstance(tau, (int, float)):
         return cy_filters.cy_low_pass_filter(input.astype(np.float64), delta_t, tau)
     else:
         return cy_filters.cy_dynamic_low_pass_filter(input.astype(np.float64), delta_t, tau, method)
 
 def high_pass(input, delta_t, tau):
+    from wetb.signal.filters import cy_filters
+
     return cy_filters.cy_high_pass_filter(input.astype(np.float64), delta_t, tau)
diff --git a/wetb/signal/fit/_bin_fit.py b/wetb/signal/fit/_bin_fit.py
index fcaf5879f9e0f89c99ded6cf8b69f32f48997e9e..fbeaf651ee1dfa4b53589878cc156243394faff2 100644
--- a/wetb/signal/fit/_bin_fit.py
+++ b/wetb/signal/fit/_bin_fit.py
@@ -77,7 +77,7 @@ def bin_fit(x,y, bins=10, kind='linear', bin_func=np.nanmean, bin_min_count=3, l
         lower, upper = lower_upper 
     
     #Add value to min(x)
-    if bin_x_fit[0] > np.nanmin(x):
+    if bin_x_fit[0] > np.nanmin(x) or np.isnan(bin_y_fit[0]):
         if lower =='extrapolate':
         
             bin_y_fit = np.r_[bin_y_fit[0] - (bin_x_fit[0] - np.nanmin(x)) * (bin_y_fit[1] - bin_y_fit[0]) / (bin_x_fit[1] - bin_x_fit[0]), bin_y_fit]
@@ -91,7 +91,7 @@ def bin_fit(x,y, bins=10, kind='linear', bin_func=np.nanmean, bin_min_count=3, l
             raise NotImplementedError("Argument for handling lower observations, %s, not implemented"%lower)
         
     #add value to max(x)
-    if bin_x_fit[-1] < np.nanmax(x):
+    if bin_x_fit[-1] < np.nanmax(x) or np.isnan(bin_y_fit[-1]):
         if upper == 'extrapolate':
             bin_y_fit = np.r_[bin_y_fit, bin_y_fit[-1] + (np.nanmax(x) - bin_x_fit[-1]) * (bin_y_fit[-1] - bin_y_fit[-2]) / (bin_x_fit[-1] - bin_x_fit[-2]) ]
             bin_x_fit = np.r_[bin_x_fit, np.nanmax(x)]
@@ -194,6 +194,7 @@ def _interpolate_fit(bin_x_fit, bin_y_fit, kind='linear'):
         x = x[:].copy().astype(np.float)
         x[x<bin_x_fit[0]] = np.nan
         x[x>bin_x_fit[-1]] = np.nan
-        return interp1d(bin_x_fit, bin_y_fit, kind)(x[:])
+        m = ~(np.isnan(bin_x_fit)|np.isnan(bin_y_fit))
+        return interp1d(bin_x_fit[m], bin_y_fit[m], kind)(x[:])
     return fit