25/08/2000

I see you've entered a date: 25 August 2000. What would you like to do with this? For example:
  • Is this a date of birth (age calculation)?
  • A reference date for a medical or clinical scenario?
  • Something else?

18:32

You've now given a date and time: 25 August 2000, 18:32. What would you like me to do with this? For example:
  • A date of birth — should I calculate the current age?
  • A timestamp for an event you're documenting?
  • Something else entirely?

Shirpur maharashtra

Checking Date & Time
So you were born on 25 August 2000 at 18:32 in Shirpur, Maharashtra. You're likely looking for your birth details summary or perhaps a horoscope / kundali?
Here's what I can confirm:

Date of Birth: 25 August 2000 Time of Birth: 18:32 (6:32 PM) Place of Birth: Shirpur, Maharashtra, India
Current Age: 25 years, 8 months, and 6 days (as of 1 May 2026)

Shirpur, Maharashtra coordinates:
  • Latitude: ~21.35° N
  • Longitude: ~74.88° E
  • Time Zone: IST (UTC +5:30)

What would you like next?
  1. Kundali / Birth Chart (Vedic astrology)?
  2. Western astrology sun/moon/rising signs?
  3. Numerology reading?
  4. Something else?

Kundali

general-purpose

Calculate a detailed Vedic astrology Kundali (birth chart) for the following birth details: - Date of Birth: 25 August 2000 - Time of Birth: 18:32 (6:32 PM IST) - Place of Birth: Shirpur, Maharashtra, India - Latitude: 21.35° N - Longitude: 74.88° E - Timezone: IST (UTC +5:30) Please calculate and return ALL of the following using standard Vedic astrology (Lahiri ayanamsha): 1. **Lagna (Ascendant)** - which rashi and degree 2. **Planetary positions** - for all 9 grahas (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) - include the rashi (sign), house, and degree for each 3. **Nakshatra** - birth nakshatra (Janma Nakshatra), pada, and nakshatra lord 4. **Rashi** (Moon sign) and **Rashi lord** 5. **Lagna lord** 6. **Vimshottari Dasha** - current dasha, antardasha, and pratyantardasha as of May 1, 2026 7. **Navamsa (D9) chart** - planetary positions in navamsa 8. **Panchang details** for the birth date: - Tithi - Vara (weekday) - Yoga - Karana 9. **Basic personality traits** based on Lagna and Moon sign 10. **Current planetary period interpretation** (what the current dasha means) Use precise astronomical calculations. Show all working where possible. Return a comprehensive, well-formatted response.

Checking Date & Time
Reading File
Running Command

pip install ephem pyswisseph 2>/dev/null | tail -3; python3 -c "import swisseph; print('swisseph OK')" 2>/dev/null || echo "no swisseph"; python3 -c "import ephem; print('ephem OK')" 2>/dev/null || echo "no ephem"

Writing File

/home/daytona/kundali_calc.py

#!/usr/bin/env python3
"""
Vedic Astrology Kundali Calculator
Birth: 25 August 2000, 18:32 IST, Shirpur, Maharashtra, India
Lat: 21.35N, Lon: 74.88E, TZ: UTC+5:30
Using Swiss Ephemeris with Lahiri (Chitrapaksha) Ayanamsha
"""

import swisseph as swe
import math
from datetime import datetime, timedelta

# ─────────────────────────────────────────────
# 1. BIRTH DATA
# ─────────────────────────────────────────────
birth_year   = 2000
birth_month  = 8
birth_day    = 25
birth_hour   = 18
birth_min    = 32
birth_sec    = 0
lat          = 21.35       # N
lon          = 74.88       # E
tz_offset    = 5.5         # IST = UTC+5:30

# Convert birth time to UTC
birth_ut_h = birth_hour + birth_min/60.0 + birth_sec/3600.0 - tz_offset
# If that goes negative it means previous day – handle:
birth_day_ut  = birth_day
birth_month_ut= birth_month
birth_year_ut = birth_year
if birth_ut_h < 0:
    birth_ut_h += 24
    birth_day_ut -= 1   # simplify, same day here

print(f"Birth UTC time: {birth_year_ut}-{birth_month_ut:02d}-{birth_day_ut:02d} {int(birth_ut_h):02d}:{int((birth_ut_h%1)*60):02d} UTC")

# Julian Day Number (UT)
jd_ut = swe.julday(birth_year_ut, birth_month_ut, birth_day_ut, birth_ut_h)
print(f"Julian Day (UT): {jd_ut:.6f}")

# ─────────────────────────────────────────────
# 2. AYANAMSHA (Lahiri / Chitrapaksha)
# ─────────────────────────────────────────────
swe.set_sid_mode(swe.SIDM_LAHIRI)
ayanamsha = swe.get_ayanamsa(jd_ut)
print(f"\nLahiri Ayanamsha: {ayanamsha:.6f}°")
print(f"  = {int(ayanamsha)}° {int((ayanamsha%1)*60):02d}' {int(((ayanamsha%1)*60%1)*60):02d}\"")

# ─────────────────────────────────────────────
# 3. PLANET POSITIONS (Tropical → Sidereal)
# ─────────────────────────────────────────────
PLANETS = {
    'Sun':     swe.SUN,
    'Moon':    swe.MOON,
    'Mars':    swe.MARS,
    'Mercury': swe.MERCURY,
    'Jupiter': swe.JUPITER,
    'Venus':   swe.VENUS,
    'Saturn':  swe.SATURN,
    'Rahu':    swe.MEAN_NODE,   # True Rahu (North Node)
}

RASHIS = ['Aries','Taurus','Gemini','Cancer','Leo','Virgo',
          'Libra','Scorpio','Sagittarius','Capricorn','Aquarius','Pisces']
RASHI_SHORT = ['Ar','Ta','Ge','Ca','Le','Vi','Li','Sc','Sg','Cp','Aq','Pi']

def tropical_to_sidereal(trop_lon, ayanamsha):
    sid = (trop_lon - ayanamsha) % 360
    return sid

def deg_to_dms(d):
    deg = int(d)
    m   = int((d - deg) * 60)
    s   = ((d - deg) * 60 - m) * 60
    return deg, m, s

def sidereal_to_rashi_deg(sid_lon):
    rashi_num = int(sid_lon / 30)   # 0-11
    deg_in_rashi = sid_lon % 30
    return rashi_num, deg_in_rashi

planet_data = {}
print("\n" + "="*70)
print("SIDEREAL PLANETARY POSITIONS (Lahiri Ayanamsha)")
print("="*70)
print(f"{'Planet':<10} {'Trop Lon':>10} {'Sid Lon':>10} {'Rashi':<14} {'Deg in Sign':>12} {'Retro':>6}")
print("-"*70)

flags = swe.FLG_SWIEPH | swe.FLG_SPEED
for planet_name, planet_id in PLANETS.items():
    result = swe.calc_ut(jd_ut, planet_id, flags)
    trop_lon   = result[0][0]
    speed      = result[0][3]
    retro      = speed < 0
    sid_lon    = tropical_to_sidereal(trop_lon, ayanamsha)
    rashi_num, deg_in_rashi = sidereal_to_rashi_deg(sid_lon)
    d,m,s = deg_to_dms(deg_in_rashi)
    planet_data[planet_name] = {
        'trop_lon': trop_lon,
        'sid_lon':  sid_lon,
        'rashi_num': rashi_num,
        'rashi': RASHIS[rashi_num],
        'deg_in_rashi': deg_in_rashi,
        'dms': (d,m,round(s,1)),
        'retro': retro,
        'speed': speed
    }
    retro_str = "R" if retro else ""
    print(f"{planet_name:<10} {trop_lon:>10.4f}° {sid_lon:>10.4f}° {RASHIS[rashi_num]:<14} {d:>2}°{m:02d}'{s:04.1f}\" {retro_str:>6}")

# Ketu = Rahu + 180
rahu_sid = planet_data['Rahu']['sid_lon']
ketu_sid  = (rahu_sid + 180) % 360
ketu_rashi_num, ketu_deg = sidereal_to_rashi_deg(ketu_sid)
d,m,s = deg_to_dms(ketu_deg)
planet_data['Ketu'] = {
    'sid_lon': ketu_sid,
    'rashi_num': ketu_rashi_num,
    'rashi': RASHIS[ketu_rashi_num],
    'deg_in_rashi': ketu_deg,
    'dms': (d,m,round(s,1)),
    'retro': True,  # nodes always retrograde
    'speed': 0
}
print(f"{'Ketu':<10} {'(Rahu+180)':>10}  {ketu_sid:>10.4f}° {RASHIS[ketu_rashi_num]:<14} {d:>2}°{m:02d}'{s:04.1f}\" {'R':>6}")

# ─────────────────────────────────────────────
# 4. LAGNA (ASCENDANT)
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("LAGNA (ASCENDANT)")
print("="*70)

# Compute houses using Placidus (or Equal) — for Vedic we use Whole Sign typically
# but let's get the exact Ascendant degree first
cusps, ascmc = swe.houses(jd_ut, lat, lon, b'P')  # P = Placidus
trop_asc = ascmc[0]
sid_asc   = tropical_to_sidereal(trop_asc, ayanamsha)
lagna_rashi_num, lagna_deg = sidereal_to_rashi_deg(sid_asc)
d,m,s = deg_to_dms(lagna_deg)
lagna_rashi = RASHIS[lagna_rashi_num]
print(f"Tropical ASC:    {trop_asc:.4f}°")
print(f"Sidereal ASC:    {sid_asc:.4f}°")
print(f"Lagna Rashi:     {lagna_rashi} ({d}°{m:02d}'{s:.1f}\")")

# Lagna lords
RASHI_LORDS = {
    'Aries':'Mars','Taurus':'Venus','Gemini':'Mercury','Cancer':'Moon',
    'Leo':'Sun','Virgo':'Mercury','Libra':'Venus','Scorpio':'Mars',
    'Sagittarius':'Jupiter','Capricorn':'Saturn','Aquarius':'Saturn','Pisces':'Jupiter'
}
lagna_lord = RASHI_LORDS[lagna_rashi]
print(f"Lagna Lord:      {lagna_lord}")

# ─────────────────────────────────────────────
# 5. HOUSE POSITIONS (Whole Sign system — standard Vedic)
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("HOUSE POSITIONS (Whole Sign System)")
print("="*70)
# In Whole Sign: House 1 = Lagna rashi, House 2 = next rashi, etc.
def get_house_whole_sign(planet_rashi_num, lagna_rashi_num):
    house = (planet_rashi_num - lagna_rashi_num) % 12 + 1
    return house

print(f"\nLagna (1st House) = {lagna_rashi}")
print(f"\n{'Planet':<10} {'Rashi':<14} {'House':>6} {'Degrees':<16} {'Retro':>6}")
print("-"*55)
all_planets_order = ['Sun','Moon','Mars','Mercury','Jupiter','Venus','Saturn','Rahu','Ketu']
for p in all_planets_order:
    pd = planet_data[p]
    house = get_house_whole_sign(pd['rashi_num'], lagna_rashi_num)
    d,m,s = pd['dms']
    retro_str = "R" if pd.get('retro', False) else ""
    print(f"{p:<10} {pd['rashi']:<14} {house:>6}    {d:>2}°{m:02d}'{s:4.1f}\" {retro_str:>6}")

planet_data_with_houses = {}
for p in all_planets_order:
    pd = planet_data[p]
    house = get_house_whole_sign(pd['rashi_num'], lagna_rashi_num)
    planet_data_with_houses[p] = house

# ─────────────────────────────────────────────
# 6. NAKSHATRA
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("NAKSHATRA DETAILS")
print("="*70)

NAKSHATRAS = [
    'Ashwini','Bharani','Krittika','Rohini','Mrigashira','Ardra',
    'Punarvasu','Pushya','Ashlesha','Magha','Purva Phalguni','Uttara Phalguni',
    'Hasta','Chitra','Swati','Vishakha','Anuradha','Jyeshtha',
    'Moola','Purva Ashadha','Uttara Ashadha','Shravana','Dhanishtha','Shatabhisha',
    'Purva Bhadrapada','Uttara Bhadrapada','Revati'
]

NAKSHATRA_LORDS = [
    'Ketu','Venus','Sun','Moon','Mars','Rahu',
    'Jupiter','Saturn','Mercury','Ketu','Venus','Sun',
    'Moon','Mars','Rahu','Jupiter','Saturn','Mercury',
    'Ketu','Venus','Sun','Moon','Mars','Rahu',
    'Jupiter','Saturn','Mercury'
]

# Each nakshatra = 13°20' = 13.3333°
# Nakshatra number from Moon sidereal longitude
moon_sid = planet_data['Moon']['sid_lon']
nak_num_float = moon_sid / (360/27)   # 0-26.999
nak_num       = int(nak_num_float)    # 0-indexed
nak_frac      = nak_num_float - nak_num
pada          = int(nak_frac * 4) + 1  # 1-4

nak_name  = NAKSHATRAS[nak_num]
nak_lord  = NAKSHATRA_LORDS[nak_num]
nak_deg_span = 360 / 27   # 13.3333...
deg_in_nak = (moon_sid % nak_deg_span)
d,m,s = deg_to_dms(deg_in_nak)

print(f"Moon Sidereal Longitude: {moon_sid:.4f}°")
print(f"Janma Nakshatra:  {nak_name} (Nakshatra #{nak_num+1})")
print(f"Pada:             {pada}")
print(f"Nakshatra Lord:   {nak_lord}")
print(f"Degree in Nak:    {d}°{m:02d}'{s:.1f}\"")

# Moon sign (Rashi)
moon_rashi_num = planet_data['Moon']['rashi_num']
moon_rashi     = planet_data['Moon']['rashi']
moon_rashi_lord= RASHI_LORDS[moon_rashi]
print(f"\nJanma Rashi (Moon Sign): {moon_rashi}")
print(f"Rashi Lord:              {moon_rashi_lord}")

# ─────────────────────────────────────────────
# 7. VIMSHOTTARI DASHA
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("VIMSHOTTARI DASHA")
print("="*70)

# Dasha sequence & years
DASHA_LORDS  = ['Ketu','Venus','Sun','Moon','Mars','Rahu','Jupiter','Saturn','Mercury']
DASHA_YEARS  = {'Ketu':7,'Venus':20,'Sun':6,'Moon':10,'Mars':7,'Rahu':18,'Jupiter':16,'Saturn':19,'Mercury':17}
DASHA_TOTAL  = 120  # years

# Birth nakshatra lord starts the dasha
birth_nak_lord  = nak_lord
start_index     = DASHA_LORDS.index(birth_nak_lord)

# Elapsed portion in birth nakshatra
elapsed_fraction = nak_frac  # fraction of nakshatra already traversed
start_dasha_years= DASHA_YEARS[birth_nak_lord]
# Time already elapsed in this dasha at birth:
elapsed_in_dasha = elapsed_fraction * start_dasha_years  # years
remaining_in_first_dasha = start_dasha_years - elapsed_in_dasha

print(f"\nBirth Nakshatra: {nak_name}, Lord: {birth_nak_lord}")
print(f"Fraction elapsed in nakshatra at birth: {elapsed_fraction:.6f}")
print(f"Elapsed in {birth_nak_lord} Dasha at birth: {elapsed_in_dasha:.4f} years")
print(f"Remaining in {birth_nak_lord} Dasha from birth: {remaining_in_first_dasha:.4f} years")

from datetime import date
birth_date = date(2000, 8, 25)

def add_years_decimal(d, years_decimal):
    """Add decimal years to a date."""
    total_days = years_decimal * 365.25
    return d + timedelta(days=total_days)

# Build full dasha table
print(f"\n{'#':<3} {'Dasha Lord':<12} {'Start Date':<14} {'End Date':<14} {'Years':>6}")
print("-"*55)
dasha_table = []
current_date = birth_date
for i in range(9):
    idx = (start_index + i) % 9
    lord = DASHA_LORDS[idx]
    years = DASHA_YEARS[lord]
    if i == 0:
        yrs = remaining_in_first_dasha
        start_d = birth_date
    else:
        yrs = years
        start_d = prev_end
    end_d = add_years_decimal(start_d, yrs)
    dasha_table.append({'lord': lord, 'start': start_d, 'end': end_d, 'years': yrs})
    print(f"{i+1:<3} {lord:<12} {start_d.strftime('%d %b %Y'):<14} {end_d.strftime('%d %b %Y'):<14} {yrs:>6.3f}")
    prev_end = end_d

# Find current Mahadasha as of May 1 2026
target_date = date(2026, 5, 1)
print(f"\nTarget Date: {target_date}")

current_maha = None
for d_entry in dasha_table:
    if d_entry['start'] <= target_date < d_entry['end']:
        current_maha = d_entry
        break

if current_maha:
    print(f"\nCurrent Mahadasha: {current_maha['lord']}")
    print(f"  From: {current_maha['start']} To: {current_maha['end']}")
else:
    print("Target date outside calculated range — extending table.")
    # Try next cycle
    last_end = dasha_table[-1]['end']
    idx_cont  = (start_index + 9) % 9
    for i in range(9):
        idx = (idx_cont + i) % 9
        lord = DASHA_LORDS[idx]
        years = DASHA_YEARS[lord]
        start_d = last_end
        end_d = add_years_decimal(start_d, years)
        dasha_table.append({'lord': lord, 'start': start_d, 'end': end_d, 'years': years})
        if start_d <= target_date < end_d:
            current_maha = {'lord': lord, 'start': start_d, 'end': end_d}
            print(f"\nCurrent Mahadasha: {lord}")
            print(f"  From: {start_d} To: {end_d}")
            break
        last_end = end_d

# ─── Antardasha (Bhukti) ───
print("\n--- ANTARDASHAS within current Mahadasha ---")
maha_lord   = current_maha['lord']
maha_start  = current_maha['start']
maha_end    = current_maha['end']
maha_total_years = (maha_end - maha_start).days / 365.25
maha_idx    = DASHA_LORDS.index(maha_lord)

antar_table = []
a_start = maha_start
print(f"\n{'Antar Lord':<14} {'Start':<14} {'End':<14} {'Days':>6}")
print("-"*50)
for i in range(9):
    a_idx = (maha_idx + i) % 9
    a_lord = DASHA_LORDS[a_idx]
    a_yrs  = (DASHA_YEARS[maha_lord] * DASHA_YEARS[a_lord]) / DASHA_TOTAL
    # Scale to actual mahadasha length
    actual_a_yrs = a_yrs * (maha_total_years / DASHA_YEARS[maha_lord])
    a_end  = add_years_decimal(a_start, actual_a_yrs)
    days_a = (a_end - a_start).days
    antar_table.append({'lord': a_lord, 'start': a_start, 'end': a_end})
    print(f"{a_lord:<14} {a_start.strftime('%d %b %Y'):<14} {a_end.strftime('%d %b %Y'):<14} {days_a:>6}")
    a_start = a_end

current_antar = None
for a in antar_table:
    if a['start'] <= target_date < a['end']:
        current_antar = a
        break

if current_antar:
    print(f"\nCurrent Antardasha (Bhukti): {current_antar['lord']}")
    print(f"  From: {current_antar['start']} To: {current_antar['end']}")

# ─── Pratyantardasha (Sub-Sub period) ───
if current_antar:
    print("\n--- PRATYANTARDASHAS within current Antardasha ---")
    ant_lord  = current_antar['lord']
    ant_start = current_antar['start']
    ant_end   = current_antar['end']
    ant_total = (ant_end - ant_start).days / 365.25
    ant_idx   = DASHA_LORDS.index(ant_lord)
    
    pratya_table = []
    p_start = ant_start
    print(f"\n{'Pratya Lord':<14} {'Start':<14} {'End':<14} {'Days':>6}")
    print("-"*50)
    for i in range(9):
        p_idx = (ant_idx + i) % 9
        p_lord= DASHA_LORDS[p_idx]
        p_yrs = (DASHA_YEARS[maha_lord] * DASHA_YEARS[ant_lord] * DASHA_YEARS[p_lord]) / (DASHA_TOTAL * DASHA_TOTAL)
        actual_p_yrs = p_yrs * (ant_total / ((DASHA_YEARS[maha_lord] * DASHA_YEARS[ant_lord]) / DASHA_TOTAL))
        p_end = add_years_decimal(p_start, actual_p_yrs)
        days_p= (p_end - p_start).days
        pratya_table.append({'lord': p_lord, 'start': p_start, 'end': p_end})
        print(f"{p_lord:<14} {p_start.strftime('%d %b %Y'):<14} {p_end.strftime('%d %b %Y'):<14} {days_p:>6}")
        p_start = p_end

    current_pratya = None
    for p in pratya_table:
        if p['start'] <= target_date < p['end']:
            current_pratya = p
            break

    if current_pratya:
        print(f"\nCurrent Pratyantardasha: {current_pratya['lord']}")
        print(f"  From: {current_pratya['start']} To: {current_pratya['end']}")

# ─────────────────────────────────────────────
# 8. NAVAMSA (D9) CHART
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("NAVAMSA (D9) CHART")
print("="*70)
print("(Each sign divided into 9 parts of 3°20' each)")
print()

NAVAMSA_SIGN_START = {
    'Aries':0,'Leo':4,'Sagittarius':8,        # Fire signs start from Aries
    'Taurus':8,'Virgo':0,'Capricorn':4,         # Earth signs start from Capricorn
    'Gemini':4,'Libra':8,'Aquarius':0,          # Air signs start from Libra
    'Cancer':3,'Scorpio':7,'Pisces':11           # Water signs start from Cancer
}

# More precise: Navamsa start navamsa lord for each rashi
# Fiery: Aries(0), Leo(4), Sagittarius(8) → Navamsa starts Aries
# Earthy: Taurus(1), Virgo(5), Capricorn(9) → starts Capricorn(9)
# Airy:  Gemini(2), Libra(6), Aquarius(10) → starts Libra(6)
# Watery: Cancer(3), Scorpio(7), Pisces(11) → starts Cancer(3)

RASHI_ELEMENT = {
    0:'fire',1:'earth',2:'air',3:'water',
    4:'fire',5:'earth',6:'air',7:'water',
    8:'fire',9:'earth',10:'air',11:'water'
}
NAVAMSA_START_RASHI = {
    'fire': 0,   # Aries
    'earth': 9,  # Capricorn
    'air': 6,    # Libra
    'water': 3   # Cancer
}

def get_navamsa_sign(sid_lon):
    rashi_num = int(sid_lon / 30)
    deg_in_rashi = sid_lon % 30
    # Each navamsa = 30/9 = 3.3333 degrees
    navamsa_num = int(deg_in_rashi / (30/9))  # 0-8
    element = RASHI_ELEMENT[rashi_num]
    start_rashi = NAVAMSA_START_RASHI[element]
    d9_rashi = (start_rashi + navamsa_num) % 12
    return d9_rashi, navamsa_num + 1

print(f"{'Planet':<10} {'Rashi (D1)':<14} {'D1 Deg':>8} {'Navamsa #':>10} {'D9 Rashi':<14}")
print("-"*60)

navamsa_data = {}
# Include Lagna
lagna_d9, lagna_nav_num = get_navamsa_sign(sid_asc)
print(f"{'Lagna':<10} {lagna_rashi:<14} {lagna_deg:>8.4f}° {lagna_nav_num:>10} {RASHIS[lagna_d9]:<14}")
navamsa_data['Lagna'] = RASHIS[lagna_d9]

for p in all_planets_order:
    pd = planet_data[p]
    d9_rashi_num, nav_num = get_navamsa_sign(pd['sid_lon'])
    navamsa_data[p] = RASHIS[d9_rashi_num]
    print(f"{p:<10} {pd['rashi']:<14} {pd['deg_in_rashi']:>8.4f}° {nav_num:>10} {RASHIS[d9_rashi_num]:<14}")

# D9 House positions
print(f"\nNavamsa Lagna: {navamsa_data['Lagna']}")
d9_lagna_num = RASHIS.index(navamsa_data['Lagna'])
print(f"\n{'Planet':<10} {'D9 Rashi':<14} {'D9 House':>9}")
print("-"*35)
for p in all_planets_order:
    d9r = navamsa_data[p]
    d9r_num = RASHIS.index(d9r)
    d9_house = (d9r_num - d9_lagna_num) % 12 + 1
    print(f"{p:<10} {d9r:<14} {d9_house:>9}")

# ─────────────────────────────────────────────
# 9. PANCHANG
# ─────────────────────────────────────────────
print("\n" + "="*70)
print("PANCHANG FOR BIRTH DATE (25 Aug 2000, IST)")
print("="*70)

# ─── Vara (Weekday) ───
birth_datetime = datetime(2000, 8, 25, 18, 32, 0)
weekday_names = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
weekday_num   = birth_datetime.weekday()  # 0=Mon
vara = weekday_names[weekday_num]
VARA_LORDS = {'Sunday':'Sun','Monday':'Moon','Tuesday':'Mars',
              'Wednesday':'Mercury','Thursday':'Jupiter','Friday':'Venus','Saturday':'Saturn'}
print(f"Vara (Weekday): {vara} (Lord: {VARA_LORDS[vara]})")

# ─── Tithi ───
# Tithi = (Moon_lon - Sun_lon) / 12, ceil gives tithi number
sun_sid  = planet_data['Sun']['sid_lon']
moon_sid = planet_data['Moon']['sid_lon']
diff = (moon_sid - sun_sid) % 360
tithi_num  = int(diff / 12) + 1  # 1-30
tithi_frac = (diff % 12) / 12

TITHI_NAMES = [
    'Pratipada (1)','Dvitiya (2)','Tritiya (3)','Chaturthi (4)',
    'Panchami (5)','Shashthi (6)','Saptami (7)','Ashtami (8)',
    'Navami (9)','Dashami (10)','Ekadashi (11)','Dwadashi (12)',
    'Trayodashi (13)','Chaturdashi (14)','Purnima/Amavasya (15/30)'
]
PAKSHA = 'Shukla' if tithi_num <= 15 else 'Krishna'
tithi_in_paksha = tithi_num if tithi_num <= 15 else tithi_num - 15
tithi_display = TITHI_NAMES[min(tithi_in_paksha-1, 14)]

print(f"Sun sidereal:   {sun_sid:.4f}°")
print(f"Moon sidereal:  {moon_sid:.4f}°")
print(f"Moon-Sun diff:  {diff:.4f}°")
print(f"Tithi:          {PAKSHA} {tithi_display}")
print(f"  (Tithi #{tithi_num}, fraction elapsed: {tithi_frac:.3f})")

# ─── Karana ───
# Karana = tithi half. Each tithi has 2 karanas.
karana_num = int(diff / 6) + 1  # 1-60
FIXED_KARANAS = {57:'Shakuni', 58:'Chatushpada', 59:'Naga', 60:'Kimstughna'}
MOVABLE_KARANAS = ['Bava','Balava','Kaulava','Taitila','Garaja','Vanija','Vishti']
if karana_num == 1:
    karana = 'Kimstughna'
elif karana_num >= 57:
    karana = FIXED_KARANAS.get(karana_num, 'Fixed')
else:
    # Moveable karanas cycle 8 times (karanas 2-57 = 56 karanas / 7 = 8 cycles)
    idx = (karana_num - 2) % 7
    karana = MOVABLE_KARANAS[idx]
print(f"Karana:         {karana} (Karana #{karana_num})")

# ─── Yoga ───
# Yoga = (Sun_lon + Moon_lon) / (360/27) → index 0-26
yoga_sum   = (sun_sid + moon_sid) % 360
yoga_num   = int(yoga_sum / (360/27))  # 0-26
YOGA_NAMES = [
    'Vishkambha','Priti','Ayushman','Saubhagya','Shobhana','Atiganda',
    'Sukarma','Dhriti','Shoola','Ganda','Vriddhi','Dhruva',
    'Vyaghata','Harshana','Vajra','Siddhi','Vyatipata','Variyan',
    'Parigha','Shiva','Siddha','Sadhya','Shubha','Shukla',
    'Brahma','Indra','Vaidhriti'
]
yoga = YOGA_NAMES[yoga_num]
YOGA_GOOD = ['Priti','Ayushman','Saubhagya','Shobhana','Sukarma','Dhriti','Vriddhi',
             'Dhruva','Harshana','Siddhi','Shiva','Siddha','Sadhya','Shubha','Shukla',
             'Brahma','Indra']
yoga_nature = 'Auspicious' if yoga in YOGA_GOOD else 'Inauspicious/Mixed'
print(f"Yoga:           {yoga} (Yoga #{yoga_num+1}) — {yoga_nature}")
print(f"  (Sun+Moon = {yoga_sum:.4f}°)")

# ─── Summary ───
print("\n" + "="*70)
print("SUMMARY TABLE")
print("="*70)
print(f"\nLagna:          {lagna_rashi} — {lagna_deg:.2f}° ({lagna_lord} rules)")
print(f"Moon (Rashi):   {moon_rashi} (Lord: {moon_rashi_lord})")
print(f"Nakshatra:      {nak_name}, Pada {pada}, Lord: {nak_lord}")
print(f"\nPanchang:")
print(f"  Vara:   {vara}")
print(f"  Tithi:  {PAKSHA} {tithi_display}")
print(f"  Nakshatra: {nak_name} Pada {pada}")
print(f"  Yoga:   {yoga}")
print(f"  Karana: {karana}")

print(f"\nDasha (as of {target_date}):")
print(f"  Mahadasha:       {current_maha['lord']} ({current_maha['start']} – {current_maha['end']})")
if current_antar:
    print(f"  Antardasha:      {current_antar['lord']} ({current_antar['start']} – {current_antar['end']})")
if current_pratya:
    print(f"  Pratyantardasha: {current_pratya['lord']} ({current_pratya['start']} – {current_pratya['end']})")

print("\n=== CALCULATION COMPLETE ===")
Running Command

python3 /home/daytona/kundali_calc.py 2>&1

Here is your Vedic Kundali based on Lahiri Ayanamsha:

🪐 Kundali — 25 Aug 2000 | 18:32 IST | Shirpur, Maharashtra


1. 📍 Lagna (Ascendant)

LagnaAquarius (Kumbha) — 3°29'
Lagna LordSaturn (Shani)

2. 🌟 Planetary Positions

GrahaRashi (Sign)HouseDegree
☀️ SunLeo (Simha)7th8°45'
🌙 MoonGemini (Mithuna)5th15°11'
♂️ MarsGemini (Mithuna)5th2°30'
☿ MercuryLeo (Simha)7th22°18'
♃ JupiterTaurus (Vrishabha)4th14°52'
♀️ VenusLeo (Simha)7th0°10'
♄ SaturnTaurus (Vrishabha)4th20°04'
☊ RahuGemini (Mithuna)5th21°56'
☋ KetuSagittarius (Dhanu)11th21°56'
Notable: Triple stellium in Leo (7th house) — Sun + Mercury + Venus. This is exceptionally rare and powerful.

3. 🌙 Nakshatra Details

Janma NakshatraArdra (6th Nakshatra)
Pada3rd Pada
Nakshatra LordRahu
SymbolTeardrop / Diamond
DeityRudra (the storm god)
Ardra natives are sharp, curious, intensely searching minds — often transformative and unconventional thinkers.

4. 📅 Panchang (Birth Day)

ElementValue
Vara (Weekday)Friday (Shukravaar)
TithiKrishna Ekadashi (11th waning moon)
YogaSiddhi Yoga ✨ (auspicious — "accomplishment")
KaranaBalava
Born in Siddhi Yoga — considered one of the most auspicious yogas, indicating natural ability to accomplish goals.

5. 🔯 Navamsa (D9) Chart Highlights

Navamsa LagnaScorpio
JupiterTaurus — Vargottama (same sign in D1 and D9)
Vargottama Jupiter is one of the strongest blessings in Vedic astrology — it amplifies Jupiter's wisdom, fortune, and dharmic qualities significantly.

6. ⏳ Vimshottari Dasha (as of 1 May 2026)

LevelPeriod
MahadashaSaturn (Shani)
AntardashaMercury (Budha)
PratyantardashaMercury (Budha)
Saturn–Mercury period: This is a time of disciplined intellectual work, strategic thinking, structured communication, and building long-term foundations. Mercury rules your 5th house (creativity, intelligence) and 8th house — expect deep study, transformation through knowledge, and career-related effort and reward.

7. 🧭 Personality Overview

Aquarius Lagna (Kumbha):
  • Independent, unconventional, humanitarian
  • Intellectual and analytical
  • Drawn to innovation, social causes, unique paths
  • Saturn as lagna lord gives discipline and delayed-but-lasting success
Gemini Moon (Ardra Nakshatra):
  • Quick mind, curious, communicative
  • Emotionally adaptable but can feel restless
  • Strong intuition and pattern recognition
  • Rahu-ruled Ardra gives intensity, depth, and transformative experiences
7th House Leo Stellium (Sun + Mercury + Venus):
  • Magnetic personality in relationships and public life
  • Highly expressive, creative, and charismatic
  • Natural speaker, writer, or performer
  • Relationships are central to life purpose

⭐ Special Yogas

YogaPlanets InvolvedMeaning
Vargottama JupiterJupiter in TaurusExceptional wisdom & fortune
Siddhi Yoga (birth)PanchangAbility to accomplish goals
Leo StelliumSun + Mercury + VenusCharisma, creative power, public appeal

Disclaimer: This Kundali is computed using standard Vedic (Jyotish) principles with Lahiri ayanamsha. For precise degree-level accuracy and personalized reading, consult a qualified Jyotishi with verified software.
This is a shared conversation. Sign in to Orris to start your own chat.