Q:

VBA truncate value

I'm trying to truncate some values because round functions don't fit my issue since I want to compare the values I'm dealing with with some others values but I don't if they were rounded up or down so I get errors.
Anyway, I've tried many things but still don't get what I want... The must would be something like =TRUNC but it is not available in VBA...
My last try which almost gave what I wanted is :
.Cells(iLine, iCol) = Int(.Cells(iLine, iCol).Value * 1000) / 1000

But the problem is that sometimes when I have a "-1" it gives "-1.001" so that messes things up... I don't really know why it does that since I put a msgbox after the * 1000 (so before the / 1000) and the result is -1000. So the problem comes from the division.
--> So if anyone knows a better solution to truncate or if you know why 1000/1000 gives me -1.001 thank you in advance !

Another solution was : 
Range(.Cells(iLine, iCol), .Cells(iLine, iCol)).Select 
Selection.NumberFormat = "0.000"
Range(.Cells(iLine, iCol), .Cells(iLine, iCol)) = Range(.Cells(iLine, iCol), .Cells(iLine, iCol)).Text * 1

But this is not what I'm looking because of two things :

It forces my cell format to 0.000 which isn't confortable/aesthetic to read when you have -1.000
It is not possible to do that with simple values only with ranges (I'm not about this one though)

EDIT : after some several test on my line .Cells(iLine, iCol) = Int(.Cells(iLine, iCol) * 1000) / 1000 it appears that the problem comes from the Int() function. Because -1*1000 = -1000 but int(-1000) = -1001. Anyone knows why this happens ?
Even when I increase the precision of this cell by let's say -1.000000 I get the same problem, it's only when I put Int() on it that the extra 1 apprears

A:

So I wanted to truncate my value and got a wrong number. To test if it was some rounding problem I tried to round to 10-6 before truncating to 10-3 and that worked :
.Cells(iLine, iCol) = Round(.Cells(iLine, iCol), 6)
.Cells(iLine, iCol) = Int(.Cells(iLine, iCol).Value * 1000) / 1000

I don't feel like this tells us why int(-1000.000000) gives -1001.000000 but hey, that works !
Thank you everyone
EDIT : I've just realized that Int() actually rounds because microsoft's doc says that INT(-4.5) = -5 So I guess my -1 was actually -1.0000[...]00001...

