Since it's a VALUE, not a STRING, and you want to check for 0 OR -1, why not simply test for a value less than 1, which would include 0 and -1?

What's with the Gotos, especially the Goto Skip that's immediately followed by Goto End? That will never run the Goto End! Sloppy! "C-" (see! You're bringing out my instructor side...)

In your last test, you're comparing apples and elephants. You manually set $Result to a string, yet are trying to test for a numeric value? If you want to test the logic, try this:
 Code:
$Result = -1 ; alternately set this value to -1, 0, and then 1

If $Result < 1
  $ = MessageBox('Result is -1 or 0', 'Result Status', 4160)
Else
  $ = MessageBox('Result is 1', 'Result Status', 4160)
EndIf

This function really begs for a case statement, though..

 Code:
$File1 = 'this file'    ; change these as appropriate - use full paths
$File2 = 'that file'

; set the Result value based on file time comparison
$Result = CompareFileTimes($File1, $File2)

; Use Select to decide what to do
Select
 Case $Result = -2  ; no source
  'The source file was not found - cannot continue!' ?
  Quit 2
 Case $Result < 0   ; target older or missing - update
  'Updating the target file!' ?
  Copy $File1 $File2
 Case 0             ; files are identical - do nothing
  'Files are identical!' ?
 Case 1             ; target is newer? Is this OK? 
  'Target is newer!' ?
EndSelect

Finally - why messageboxes for all your output? Script development and testing should be done from a command prompt so you can see the errors that are generated - running from explorer will mask many important bits of information.

Glenn
_________________________
Actually I am a Rocket Scientist! \:D