Are you leveling resources? Do you have the option set to level resources every time you reschedule even if you aren't intending to do so?
Does the activity have suspend/resume dates?
Put columns on the table for Planned start and Remaining early start. Compare them to the Early Start or Start date. Do they make sense?
Are you using driving resources? If yes, the primary resource could be controlling the activity's dates through the resource's planned, remaining early, or early start date(s). Put date columns on the resource tab and do a visual inspection.
Force the system to contradict its own dates. Move the data date out in the future someplace, reschedule, pull it back to where it was, reschedule again and check the errant activity.
Not fixed. Give the activity an actual start date in front of the data date, reschedule, remove the actual date, reschedule again.
Still not fixed. Delete and re-add the activity.