public static short LOWORD(int dw) { short loWord = 0; ushort andResult = (ushort)(dw & 0x00007FFF); ushort mask = 0x8000; if ((dw & 0x8000) != 0) { loWord = (short)(mask | andResult); } else { loWord = (short)andResult; } return loWord; }