Can anyone tell me why this code always manages to return 0 in dwMemoryLoad on Windows NT, but not on Windows 98 were it works perfectly ???

Code:
Public Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Public Type MEMORYSTATUS
    dwLength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
End Type

Private Sub Form_Load()

fmt = "###,###,###,###"
skb = " Kbyte"
nkb = 1024

Dim MS As MEMORYSTATUS
MS.dwLength = Len(MS)
GlobalMemoryStatus MS
lblmemstat(0) = Format$(MS.dwMemoryLoad, fmt) & " % used" '<-- This always returns 0 on Windows NT

lblmemstat(1) = Format$(MS.dwTotalPhys / nkb, fmt) & skb
lblmemstat(2) = Format$(MS.dwAvailPhys / nkb, fmt) & skb
lblmemstat(3) = Format$(MS.dwTotalPageFile / nkb, fmt) & skb
lblmemstat(4) = Format$(MS.dwAvailPageFile / nkb, fmt) & skb
lblmemstat(5) = Format$(MS.dwTotalVirtual / nkb, fmt) & skb
lblmemstat(6) = Format$(MS.dwAvailVirtual / nkb, fmt) & skb

End Sub