Negative number of rows inserted
It is possible that the number of rows exceed the value of PLS_INTEGER. Here is the quote from Oracle on %ROWCOUNT.


  %ROWCOUNT Attribute: How Many Rows Were Fetched? %ROWCOUNT returns:
      Zero after the explicit cursor is opened but before the first fetch
      Otherwise, the number of rows fetched (a PLS_INTEGER)
      Note:
      If the number of rows exceeds the maximum value for a PLS_INTEGER, then SQL%ROWCOUNT returns a negative value. For information about
  PLS_INTEGER, see "PLS_INTEGER and BINARY_INTEGER Data Types".