=== modified file 'src/rec/aiRecord.dbd' --- src/rec/aiRecord.dbd 2005-11-15 23:35:34 +0000 +++ src/rec/aiRecord.dbd 2015-03-20 18:34:35 +0000 @@ -176,8 +176,8 @@ pp(TRUE) interest(2) } - field(ROFF,DBF_LONG) { - prompt("Raw Offset, obsolete") + field(ROFF,DBF_ULONG) { + prompt("Raw Offset") pp(TRUE) interest(2) } === modified file 'src/rec/aoRecord.c' --- src/rec/aoRecord.c 2013-11-20 22:21:10 +0000 +++ src/rec/aoRecord.c 2015-03-20 19:10:43 +0000 @@ -469,10 +469,20 @@ } value -= prec->aoff; if (prec->aslo != 0) value /= prec->aslo; - if (value >= 0.0) - prec->rval = (epicsInt32)(value + 0.5) - prec->roff; - else - prec->rval = (epicsInt32)(value - 0.5) - prec->roff; + + /* Apply raw offset and limits, round to 32-bit integer */ + value -= prec->roff; + if (value >= 0.0) { + if (value >= (0x7fffffff - 0.5)) + prec->rval = 0x7fffffff; + else + prec->rval = (epicsInt32)(value + 0.5); + } else { + if (value > (0.5 - 0x80000000)) + prec->rval = (epicsInt32)(value - 0.5); + else + prec->rval = 0x80000000; + } } === modified file 'src/rec/aoRecord.dbd' --- src/rec/aoRecord.dbd 2002-07-12 21:35:43 +0000 +++ src/rec/aoRecord.dbd 2015-03-20 17:58:18 +0000 @@ -82,8 +82,8 @@ interest(1) size(16) } - field(ROFF,DBF_LONG) { - prompt("Raw Offset, obsolete") + field(ROFF,DBF_ULONG) { + prompt("Raw Offset") pp(TRUE) interest(2) }