title: System.nanoTime() turns negative
body: <p>When attempting to investigate the runtime of various tasks using <code>System.nanoTime()</code>, the value, when the input data-set is large enough, turns negative.</p>
  
  <p>The example code used:</p>
  
  <pre><code>long start = System.nanoTime();
  run();
  long stop = System.nanoTime();
  
  int diff = (int) (stop-start);
  System.out.println(data_size+", "+diff);
  </code></pre>
  
  <p>The output, when invoking <code>run()</code> on an increasingly big data-set, looks like this:</p>
  
  <pre><code>1, 80000
  10, 4310000
  50, 48077000
  100, 171363000
  250, 1061924000
  500, 14018704
  750, 998074408
  1000, -41025184
  1500, -81710664
  2000, -273795736
  2500, 768997600
  3000, -39161248
  </code></pre>
  
  <p>Does this make sense to anyone?</p>