The help for the modulus function, -mod()- reads:

mod(x,y)
Description: the modulus of x with respect to y
mod(x,y) = x - y*floor(x/y)
mod(x,0) = .
Domain x: -8e+307 to 8e+307
Domain y: 0 to 8e+307
Range: 0 to 8e+307

However it is giving me negative values, i.e., it goes in the negative Range. And as far as I can see I am not doing anything out of the limits of its Domain:

Code:
. clear

. 
. sca Seed = 2147483647

. 
. set obs 10000000
number of observations (_N) was 0, now 10,000,000

. 
. gen double x = _n*Seed^2

. 
. summ x

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
           x | 10,000,000    2.31e+25    1.33e+25   4.61e+18   4.61e+25

. 
. replace x = mod(x, 1000000000)
(10,000,000 real changes made)

. 
. summ x

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
           x | 10,000,000    5.86e+07    6.72e+08  -3.29e+09   4.29e+09