Hi
I haven't been able to get your code to work properly.
Also, I don't think it takes leap years into account.
Actually, 45,798 days have passed, but not 45,792.
I have something pretty simple for this.
I hope it helps.
;************************ G L A V C V S *************************
;************************** F E C I T ***************************
(defun daysFrom1900 (dia mes annvs / aa diasHAP diasB diasBs da m-1 n)
(defun diasBs (ai af i / a b)
(while (<= (setq a (+ ai (setq i (1+ i)))) af)
(if (or (= (rem a 400) 0) (and (= (rem a 4) 0) (/= (rem a 100) 0))); (setq a 1900) (or (= (rem a 400) 0) (and (= (rem a 4) 0) (/= (rem a 100) 0)))
(setq b (if b (1+ b) 1))
)
)
(if b b 0)
)
(setq diasHAP (* (- annvs 1900) 365)
diasB (diasBs 1900 (- annvs 1) -1)
da (- (* (setq m-1 (- mes 1)) 31) (foreach x '(4 6 9 11) (if (> mes x) (setq n x) (if n n 0))));(vl-some '(lambda (x / n) (if (> m-1 x) (not (setq n (if n (1+ n) 1))) n)) '(4 6 9 11)))
da (if (and (> mes 2) (or (= (rem annvs 400) 0) (and (= (rem annvs 4) 0) (/= (rem annvs 100) 0)))) (- da 2) (if (> mes 2) (- da 3) da))
)
(+ diasHAP diasB da dia)
)