A zero coefficient at DC simply means the mean of the waveform is 0; bin 0 of the DFT is identical to calculating the mean value scaled by $N$.
Consider the general expression for the DFT:
$$X(k) = \sum_{n=0}^{N-1}x(n)e^{-j k \omega_n n}$$
with $\omega_n = 2\pi/N$ and $k = 0,1 \ldots N-1$
(This is a correlation of the waveform x(n) with every integer multiple of the tone with frequency $\omega_n$)
When $k=0$ this reduces to:
$$X(0) = \sum_{n=0}^{N-1}x(n)$$
While the mean of $x(n)$ is
$$\bar x = \frac{1}{N}\sum_{n=0}^{N-1}x(n) = \frac{1}{N}X(0)$$
This is how the DFT works fundamentally; for each index k in the DFT, the signal $x(n)$ is frequency translated by $-k \omega_n$, and then we take the average of that result (without dividing by $N$, so a scaled average). If any frequency component was at $k \omega_n$ prior to the frequency translation, the resulting average would be large, indicating the presence of that frequency component.
Note for just one bin of the DFT how this is the basic structure of a Digital Downconverter as shown in the block diagram below for $x(n)$ real, where the low pass filters (LPF) are basic moving average filters (such as a CIC filter). The DFT computes one time sample, and replicates this for every single bin, and supports real or complex input signals where with a complex input there would be 2 additional multipliers and 2 adders for a full complex multiplication. So to put that in perspective, a 1023 point DFT is 1023 digital down-converters all running in parallel, which makes the FFT algorithm very impressive! Every computation of the DFT is one time sample of the result, so to process as a streaming receiver the input would be shifted one sample and then a new output computed (overlap-add and overlap-save methods improve the efficiency further for such streaming applications but shifting by one sample and computing each output makes one bin of the DFT and the digital-downconverter receiver shown below equivalent).
One Bin of the DFT as a DDC (for case of real input)
