Low-pass filtering bounces when signal doesn't start at 0
The problem is due to the fact that initially, the filter memory is filled with zeros (if not otherwise stated). Since the filter output is a weighted average of the filter memory and the input, it will start its output near zero, when the initial state is set to zero. 

As Atul suggested, you can overcome this by padding 30 to the beginning of the sequence (to fill the memory before you actually filter the sequence of interest). However, the amount of padding depends on the filter and how fast it adjusts to the steady state (depending on filter order and e.g. Q-factor)

As a more elegant solution, you can initialize the filter state such that its first sample already outputs 30. You can calculate the filter state as the steady state response as to a unit step input. E.g. python has this functionality already built-in:

signal = np.linspace(30, -30, 1000)
sigma = 1
signal = signal + sigma * np.random.randn(len(signal))

plt.plot(signal)
b, a = scipy.signal.butter(5, 0.1)
zi = scipy.signal.lfilter_zi(b, a)

filtered = scipy.signal.lfilter(b, a, signal, zi=30*zi)[0]
plt.plot(filtered, lw=2)