Most likely you have to fight second problem, as always one step at a time
The issue is bouncing contact from sensor ( anemometer ). There are a few ways to fix it, you can search on forum or google for it.
I'd recommend to set limits on reported duration, so it never goes less than physical capability of the sensor itself. Anemometer, according to web link you posted, works up to 125 mph.
Rugged wind sensor handles speeds from 5 to over 125 mph.
or 50 Hz, so minimum duration is 1 / 50 = 20 millisecond.
duration = millis() - start;
start = millis();
if ( duration > 20 ) // <<<<------ report only "trustful " results.
updated = 1;
BTW, you can improve accuracy, if instead of milliseconds you change your code to microseconds,