How is this code being called, and how many times?
I presume from what you have said that it is in a "large" loop, being called multiple times. Is this right?
If that is the case, one way to speed it up noticably would be to put the code "inline", rather than calling the function each time - as the time to call a sub/function is actually quite large.
Another thing, depending on the range of values (and the number of times it is run) you may be able to get a speed boost by pre-calculating the results of the Fix() function, and storing these values in an array. This would replace a function call (admittedly an inbuilt one) and a floating point calculation with a comparatively simple array access (I have noticed decent gains on this for a simple "Square" operation).
For example: Presumably the values for JM are limited to the range 3-14, so a simple array could be made like this:
VB Code:
Dim lngCount as Long
Dim lngFixJM(14) as Long
For lngCount = 3 to 14
lngFixJM(lngCount) = Fix(30.6001 * lngCount)
Next lngCount
Then in the code instead of using "Fix(30.6001 * jm)", you can use "lngFixJM(jm)".