As I suspected in my first answer, the problem is in threads_length expression. You have defined the variable Threaded_Length, but you didn't connected to the actual length of the thread.
If you check your Expressions, you will see the following:
1. p8(Threads(4)Length) is set to 3.03in. There is no formula. So this length is constant and will always be the same, no matter what your Threaded_Length will calculate.
2. Set the formula like this: p8=Threaded_Length. Now, whenever you change the length of the Rod, the Threaded_Length will change and also the p8 variable will change.
And as JohnRBarker already said, consider changing the Threded_Length formula. According to this formula, the length of the thread will always be greater than the length of the rod.
And also another suggestion. You have set the Expressions ID, Length, Major, Minor, Pitch and Trheaded_Length. Why? If I look the use of those expressions, I see the following:
p0=ID
p1=Major
p3=Length
p5=Minor
Threaded_Length=Length+2*Pitch.
For the software, it is just more time consuming to set those variables and then calculate the expressions. Maybe it would be better, if you just change the names of the expressions instead of creating those variables:
p0 would be renamed to ID
p1 would be renamed to Major
p5 would be renamed to Minor
p3 would be renamed to Length
p7 would be renamed to Pitch
p8 would be renamed to Threaded_Length and would have the formula Length*Pitch.
Writing the expressions so, you will have less expression/variables. And NX should calcualte all the formulas faster and you can still use those expressions in any other formulas.
I have also attached the image, indicating the problem.