From d37e18e4e9e47f7fd02f81b38dfad8476aa5fa04 Mon Sep 17 00:00:00 2001 From: "DATAFRIEND.AI" Date: Sun, 21 Jun 2026 23:03:42 +0800 Subject: [PATCH] Fix _ekadhipatya_sodhana: reduce all grahas across all co-owned pairs The loop reused one index for both the BAV row and the owned-pair, so each graha's bhinnashtakavarga was reduced only at its own owned pair, and Sun and Moon were skipped entirely. This iterates every graha (Sun..Saturn) across all five co-owned pairs, applying the same per-pair rule. Fixes #52. --- src/jhora/horoscope/chart/ashtakavarga.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jhora/horoscope/chart/ashtakavarga.py b/src/jhora/horoscope/chart/ashtakavarga.py index e707b2484..2acb96a5d 100644 --- a/src/jhora/horoscope/chart/ashtakavarga.py +++ b/src/jhora/horoscope/chart/ashtakavarga.py @@ -80,8 +80,8 @@ def _trikona_sodhana(binna_ashtaka_varga): def _ekadhipatya_sodhana(binna_ashtaka_varga_after_trikona,chart_1d): bav = binna_ashtaka_varga_after_trikona[:] rasi_owners=const.ashtakavarga_rasi_owners - for p in range(const.MOON_ID+1,const.SATURN_ID+1): - r1,r2 = rasi_owners[p] + dual_pairs = [x for x in rasi_owners if isinstance(x, tuple)] # the 5 co-owned (r1,r2) pairs + for p,(r1,r2) in [(_p,_pr) for _p in const.SUN_TO_SATURN for _pr in dual_pairs]: # every graha incl. Sun/Moon, all pairs r1_occupied = not (chart_1d[r1].strip() == '') r2_occupied = not (chart_1d[r2].strip() == '') # Rule 1 (either bav is 0. Rule 2: either rasi is occupied by a planet