returning a value

i have this code to return a value, but the value returned is not a recognisable number...here is my code, could u see whether i have made any mistakes and u could explain why my code is not returning a numeric value

Code:

Function OptionValue(Asset As Double, Strike As Double, Expiry As Double, Volatility As Double, Intrate As Double, param As Integer, NoAssetSteps)

Dim Vold(0 To 100) As Double
Dim VNew(0 To 100) As Double
Dim Delta(0 To 100) As Double
Dim Gamma(0 To 100) As Double
Dim Theta(0 To 100) As Double
Dim S(0 To 100) As Double
Dim Ssqd(0 To 100) As Double

halfvolsqd = 0.5 * Volatility * Volatility
AssetStep = 2 * Strike / NoAssetSteps
NearesyGridPt = Int(Asset / AssetSteps)
dummy = (AssetStep - NearestGridPt * AssetStep) / AssetStep
Timestep = AssetStep * AssetStep / Volatility / _
Volatility / (4 * Strike * Strike)
NoTimes = Int(Expiry / Timestep) + 1
Timestep = Expiry / NoTimesteps
For i = 0 To NoAssetSteps
S(i) = i * AssetStep
Ssqd(i) = S(i) * S(i)
Vold(i) = Application.Max(S(i) - Strike, 0)

Next i

For j = 1 To NoTimesteps
For i = 1 To NoAssetSteps - 1
Delta(i) = (Vold(i + 1) - Vold(i - 1)) / _
(2 * AssetStep)
Gamma(i) = (Vold(i + 1) - 2 * Vold(i) _
+ Vold(i - 1)) / (AssetStep * AssetStep)
VNew(i) = Vold(i) + Timestep * (halfvolsqd * _
Ssqd(i) * Gamma(i) + Intrate * S(i) * _
Delta(i) - InRate * Vold(i))

Next i
VNew(0) = 0
VNew(NoAssetSteps) = 2 * _
VNew(NoAssetSteps - 1) _
- VNew(NoAssetSteps - 2)

For i = 0 To NoAssetSteps
Theta(i) = (Vold(i) - VNew(i)) / Timestep
Vold(i) = VNew(i)

Next i
Next j

For i = 1 To NoAssetSteps - 1
Delta(i) = (Vold(i + 1) - Vold(i - 1)) / _
(2 * AssetStep)

Gamma(i) = (Vold(i + 1) - 2 * Vold(i) + _
Vold(i - 1)) / (AssetStep * AssetStep)

Next i
If param = 0 Then OptionValue = (1 - dummy) * Vold(NearestGridPt) + dummy * Vold(NearestGridPt + 1)

End Function