The issue could be not including an intercept, as mentioned above. You can add another $X_i$ and set it to 1 throughout if you need it in variable form.
Not including an intercept can make your results invalid if the mean of $Y$ truly does deviate from 0.
If that is not the case then I strongly suspect misspecification to be the issue here. There are two caveats that are of special interest, but I don't know on what level your knowledge is so I will keep this brief initially since it is pretty basic stuff.
First: Missing variable bias. Any variable with a strong influence (or in this case, correlation) on the dependent variable which is also correlated with the exogenous variable in question can not be left out - otherwise your estimator $C_i$ will be invalid.
This could explain an unexpectedly negative $C_i$ if there is another variable which you left out of the model.
In this case one would suspect a variable that influences $Y$ negatively, yet is correlated with your $C_i$. Its influence will be attributed to $C_i$, maybe pulling it just into negative range.
Second: The underlying effect is not linear.
I would like you to plot the exogenous variables against the endogenous for a first hint.
Then please go ahead and run a RESET-Test. The R function is this here
Please don't do this by hand.
This tests your model against several more general Taylor approximations. If the relationship is not linear, this could be a good indicator. The test will generally "fail" your model if those other models do a better job at explaining the variation of $Y$ for whatever reason.
Of course in the end any estimation problem which makes your estimates biased could be the problem. In fact the RESET test may trigger because of other things than just the linearity of the model - but I suspect those two.
Edit: Because there was another approach posted above let me reiterate that you do NOT want to use some quick fix to force your coefficients into beeing positive. All this does is make your inference nonsense.
Using this model, especially using lm, there is a REASON why that coefficient is estimated as negative. If that can not be in reality, then it is almost certain that the whole model is errornous. Switching to a different method or trying to fix the "error" until you reach an acceptable value is very dangerous - statistical inference absolutely mandates that if you get bogus results then you have to take a step back, not sideways.
Also consider that you literally have 19 or 18 degrees of freedom on this regression. To use OLS you HAVE to have the complete set of small-samples assumptions in check, otherwise it comes as no surprise your regression goes astray.