8d83056073da90aad4a8fa216c8e92112c8ea0ea
chmalee
  Tue Aug 3 11:34:28 2021 -0700
Fixing overzealous decrement in highlight parsing, refs #27891

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index a1cf461..228fa66 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -2199,31 +2199,36 @@
 
             h->chrom  = cloneNextWordByDelimiter(&oneHl,':');
             chromStart = cloneNextWordByDelimiter(&oneHl,'-');
             chromEnd = cloneNextWordByDelimiter(&oneHl,'#');
             if (oneHl && *oneHl != '\0')
                 h->hexColor = cloneString(oneHl);
             }
 
         if (!isEmpty(chromStart) && !isEmpty(chromEnd) &&
                 isNumericString(chromStart) && isNumericString(chromEnd) &&
                 !isEmpty(h->db) && !isEmpty(h->chrom))
             {
             // long to handle virt chrom coordinates
             h->chromStart = atol(chromStart);
             h->chromEnd   = atol(chromEnd);
-            h->chromStart--; // Not zero based
+            // Typically not zero based, unless we have previously saved the highlight
+            // as a result of the multi-region code
+            if (h->chromStart > 0)
+                {
+                h->chromStart--;
+                }
             slAddHead(&hlList, h);
             }
         }
 
     slReverse(&hlList);
     }
 
 return hlList;
 }
 
 static void highlightRegions(struct cart *cart, struct hvGfx *hvg, int imagePixelHeight)
 // Highlights regions in the image.  Only done if theImgBox is not defined.
 // Thus it is done for ps/pdf and view image but the hgTracks image is highlighted via js
 {
 struct highlightVar *hlList = parseHighlightInfo();