and ash int has a max value of 9,223,372,036,854,775,807... I am fairly certain that the data type doesn't have anything to do with the error.
ash int i=1; for b from 1 to 63 {i=i*2;print ((b+1)+":"+i); if (i<0) {i=i-1;print (i);}}
As that ash line shows, even if we did run into a overflow...