Well, just try to imagine what's going on in your head, step by step. You have a panel called speedometer, that displays your speed via a variable called absSpeed. So we know that absSpeed must not be getting set correctly.

We also know that absSpeed is incorrect when the car slows down to a stop, so we should probably look at our code for when we release the w key.

Code:

if(key_w == off && accel > 0)
{
accel -= .5;
if(accel > 0)
{
absSpeed = accel;
}
if(accel <= 1)
{
accel = 0;
}
c_move(my,vector(accel,0,0),nullvector,glide);
}



Now work through this part step by step, that's the same way the computer reads it. First, it checks if accel is above 0, then sets the absSpeed variable to whatever accel is. But right after that, it sets accel to 0 whenever it's less than or equal to 1. You should update the absSpeed variable after accel is set to 0.