You are performing calculations that are solely in the domain of integers, since your divisions are always rounded (to negative infinity).
Thus your choice of floating-point variables to hold these results is a poor one.
Prefer an integer type, like so:
DEFLNG A-Z
J = 4381911
A = 52
B = 4 * (J + A + 1401) + 3
G = 5 * INT((B MOD 1461) / 4) + 2
D = INT((G MOD 153) / 5) + 1
M = ((INT(G / 153) + 2) MOD 12) + 1
PRINT D; M