diff --git a/src/interfaces/irdb/STARS_IRDB_Op.cpp b/src/interfaces/irdb/STARS_IRDB_Op.cpp
index b9ff2fe8661daccb953edd2e350e89baf0a73725..5f7848986835437c814222743b3390e26f78246b 100644
--- a/src/interfaces/irdb/STARS_IRDB_Op.cpp
+++ b/src/interfaces/irdb/STARS_IRDB_Op.cpp
@@ -212,7 +212,20 @@ no operands for eflags or mxcsr?
 			break;
   		case CONSTANT_TYPE + ABSOLUTE_ :
 			OpType=op_Imm;
-			operand.imm.imm=d.Instruction.Immediat;
+			switch(the_arg.ArgSize)
+			{
+				case 8:
+					operand.imm.imm=(signed int)(signed char)d.Instruction.Immediat;
+					break;
+				case 16:
+					operand.imm.imm=(signed int)(signed short)d.Instruction.Immediat;
+					break;
+				case 32:
+				default:
+					operand.imm.imm=d.Instruction.Immediat;
+					break;
+		
+			}
 			operand.imm.pc_rel=false;
 			byteWidth=the_arg.ArgSize/8;
 			break;