--- ./os2/os2.c~	Sat Nov  5 13:52:24 2005
+++ ./os2/os2.c	Sat Nov  5 14:46:24 2005
@@ -3173,13 +3173,16 @@ XS(XS_OS2_SysInfo)
 		break;
 	    }
 	}
-	last--;
+	last--;			/* Count of successfully processed offsets */
 	EXTEND(SP,2*last);
 	while (i < last) {
 	    ST(j) = sv_newmortal();
-	    sv_setpv(ST(j++), si_fields[i]);
+	    if (i < C_ARRAY_LENGTH(si_fields))
+		sv_setpv(ST(j++),  si_fields[i]);
+	    else
+		sv_setiv(ST(j++),  i + 1);
 	    ST(j) = sv_newmortal();
-	    sv_setiv(ST(j++), si[i]);
+	    sv_setuv(ST(j++), si[i]);
 	    i++;
 	}
 	XSRETURN(2 * last);
