The output is $c(t)\times\left(\sin\left(t\right) + 1\right)$, where $c(t)$ is the coefficient as function of time. That's multiplication by $c(t)$ in time domain, meaning that it will be convolution in frequency domain. Convolution effectively spreads the spectrum of $\left(\sin\left(t\right) + 1\right)$ which originally consists of three peaks (negative frequency of the sinusoid, 0 Hz, and positive frequency of the sinusoid). If this spread is a problem to you, you can control it by lowpass filtering $c(t)$ before doing the multiplication. Say you lowpass filter $c(t)$ at 10 Hz. The result is that the spectrum will not be spread to more than ±10 Hz away from the original peaks.
In your application you may not want a brick-wall filter like that, because its step response has an overshoot; its output goes past the original value range of $c(t)$. The easiest thing to do may be to use a number of identical one-pole lowpass filter stages in series. A one-pole lowpass filter has no overshoot. Neither has a cascade of overshoot-free filter stages. A single stage is simply $\text{out}(t) = a\ \text{in}(t) + (1-a)\ \text{out}(t)$, where $a$ is a coefficient between 0 and 1. Each stage increases the slope of the filter's frequency response by 6 dB/octave.
Using an infinite impulse response (IIR) filter such as the above means that the output only asymptotically approaches the correct value. If you want the correct value to be reached within a predetermined time, then you might want to look into finite impulse response (FIR) filters. For that, one of the usual window functions could be used as the impulse response of the FIR filter. The length of the impulse response equals the reaching time.