Screenshot below shows xd set to 1, 2, 3, 4, 5. But they are getting set way more than that. Over twice that.
Commands used:
/particle <name> <x> <y> <z> <xd> <yd> <zd> <speed> [count] [player|entity]
/particle happyVillager ~3 ~ ~ 0 0 5 0 500
/particle happyVillager ~3 ~ ~ 0 0 4 0 500
/particle happyVillager ~3 ~ ~ 0 0 3 0 500
/particle happyVillager ~3 ~ ~ 0 0 2 0 500
/particle happyVillager ~3 ~ ~ 0 0 1 0 500
Please provide the exact command that you used.