I'm not sure how Vcarve generates G-Code.
Most programs generate elipses with a ton of tiny arcs - all different. Since velocity is actually a angular function it will tend to produce a perceivable difference in speed as it moves from one arc to the next.
Your code is probably OK
Give it a shot on some scrap wood.