1 PRINT "From the March 1985 SKY & TELESCOPE, pp. 254-5." 2 PRINT 3 PRINT "This program calculates the times of new and full Moons in a given" 5 PRINT "year. The Julian calendar is used for years 1582 and earlier, and" 6 PRINT "the Gregorian calendar thereafter." 7 PRINT 8 PRINT "INPUT: Year." : PRINT 9 PRINT "OUTPUT: List of new and full moons (UT)." : PRINT 10 REM NEW AND FULL MOONS 12 REM 14 REM 16 R1=3.14159265#/180: U=0 18 INPUT "YEAR ";Y 19 G=1 : IF Y<1583 THEN G=0 20 PRINT 22 K0=INT((Y-1900)*12.3685) 24 T=(Y-1899.5)/100 26 T2=T*T: T3=T*T*T 28 J0=2415020!+29*K0 30 F0=.0001178*T2-1.55E-07*T3 32 F0=F0+.75933+.53058868#*K0 34 F0=F0-8.370001E-04*T-.000335*T2 36 J=J+INT(F): F=F-INT(F) 38 M0=K0*.08084821133# 40 M0=360*(M0-INT(M0))+359.2242 42 M0=M0-.0000333*T2 44 M0=M0-3.47E-06*T3 46 M1=K0*.07171366128# 48 M1=360*(M1-INT(M1))+306.0253 50 M1=M1+.0107306*T2 52 M1=M1+1.236E-05*T3 54 B1=K0*.08519585128# 56 B1=360*(B1-INT(B1))+21.2964 58 B1=B1-.0016528*T2 60 B1=B1-2.39E-06*T3 62 FOR K9=0 TO 28 64 J=J0+14*K9: F=F0+.765294*K9 66 K=K9/2 68 M5=(M0+K*29.10535608#)*R1 69 M6=(M1+K*385.81691806#)*R1 70 B6=(B1+K*390.67050646#)*R1 71 F=F-.4068*SIN(M6) 72 F=F+(.1734-.000393*T)*SIN(M5) 73 F=F+.0161*SIN(2*M6) 74 F=F+.0104*SIN(2*B6) 75 F=F-.0074*SIN(M5-M6) 76 F=F-.0051*SIN(M5+M6) 77 F=F+.0021*SIN(2*M5) 78 F=F+.001*SIN(2*B6-M6) 81 F=F+.5/1440 82 J=J+INT(F): F=F-INT(F) 84 IF U=0 THEN PRINT " NEW MOON "; 86 IF U=1 THEN PRINT "FULL MOON "; 88 GOSUB 920 90 U=U+1: IF U=2 THEN U=0 92 NEXT 94 RUN"ASTRMENU.BAS" 900 REM JD --> CALENDAR 905 REM 910 INPUT "J,F ";J,F 915 INPUT "JC (0) OR GC (1) ";G 920 F=F+.5 925 IF F<1 THEN 935 930 F=F-1 : J=J+1 935 IF G=1 THEN 945 940 A=J : GOTO 955 945 A1=INT((J/36524.25)-51.12264) 950 A=J+1+A1-INT(A1/4) 955 B=A+1524 960 C=INT((B/365.25)-.3343) 965 D=INT(365.25*C) 970 E=INT((B-D)/30.61) 975 D=B-D-INT(30.61*E)+F 980 M=E-1 : Y=C-4716 985 IF E>13.5 THEN M=M-12 990 IF M<2.5 THEN Y=Y+1 993 D1=INT(D) : H=24*(D-D1) 994 H1=INT(H) : M9=INT(60*(H-H1)) 995 PRINT USING "####_ ";Y; : PRINT USING "##_ ";M; : PRINT USING "##";D1; 996 PRINT TAB(25) USING "##";H1; :PRINT "h "; :PRINT USING "##";M9; :PRINT "m" 997 RETURN