You can still do the discount. Just tell them you'll knock $20 off the rent (maybe $10 if we're talking about $500 in rent) if they pay on of before the first. Its worked wonders for me.
Just tell them there is a late fee if they pay even one day late. Presumably that's in your lease. Stick to your guns and insist on it being paid. My lease says I apply money to late fees or other charges first, then rent. So, if they refuse to pay the late fee, but do pay the next months rent, apply it to the late fee first, then rent. Now the rent is short and you can post a pay or quit. I understand being gentle at first, and have worked with tenants that had a problem. But the late fees are big motivators.
You should ask, however, if there is something that forces them to be a few days late. If so, I move back the due date a couple of days, but increase the late fee. If they really need to pay on, say, the 10th, have them pay 10 days rent and shift the rental period back to the 10th through the 10th instead of 1st to 1st.