anchor.diff:  
           let mutable task = null
   
  -        while current < bound do
  +        while (current < bound) && ((current = 0L) || (read > 0)) do
               if current > 0L then
                   current <- current - 512L
   
  
positive.code: 
          let handle = Raw.CreateFile(index)
  
          let bound = 1024L*1024L*1024L
  
          let prefix, next, leaf, _ = NaiveSearch.buildSyntaxTree templates maxTemplateLength templateLengths templateArr
  
          initializer next leaf
  
          while current < bound do
              if current > 0L then
                  current <- current - 512L
  
              highBound <- (if (int64) length < bound - current then length else (int) (bound - current))
              read <- Raw.ReadFile(handle, buffer, highBound, current)
              current <- current + (int64) read
  
              let mutable countingBound = read + lowBound
              let mutable matchBound = read + lowBound
              if current < bound then
                  countingBound <- countingBound - 512
  
              let result = getter()
  
              countingTimer.Start()
              counter := !counter + NaiveSearch.countMatches result maxTemplateLength countingBound matchBound templateLengths prefix
              countingTimer.Lap(label)
      
          ignore(Raw.CloseHandle(handle))
          readingTimer.Lap(label)
  
negative.code: 
          let handle = Raw.CreateFile(index)
  
          let bound = 20L*1024L*1024L*1024L
  
          let prefix, next, leaf, _ = NaiveSearch.buildSyntaxTree templates maxTemplateLength templateLengths templateArr
  
  