score:1

Accepted answer

when you return arc(d) in arctween:

function arctween(transition, newangle) {
    transition.attrtween("name", function(d) {

        var interpolate = d3.interpolate(d.endangle, newangle);
        return function(t) {
            d.endangle = interpolate(t);
            text.text(((d.endangle/τ)*10).tofixed(1));
            return arc(d);
        };
    }); 
} 

you should instead be setting foreground.attr("d", arc):

function arctween(transition, newangle) {
    transition.attrtween("name", function(d) {

        var interpolate = d3.interpolate(d.endangle, newangle);
        return function(t) {
            d.endangle = interpolate(t);                
            text.text(((d.endangle/τ)*10).tofixed(1));
            foreground.attr("d", arc);
        };
    }); 
} 

Related Query