			 // if one or more of the alignment options

			 if (
				 PlotBSysAlign ||
			  PlotSysMeanAlign ||
			  PlotHSysMeanAlign||
			  PlotSysAlOnSun   ||
				 PlotAlSysAV   ||
				 PlotAMot)
{
				 static int oxp[MAXTRACES], oyp[MAXTRACES] ;
						int inside, s, nd ;
					 double ival ;

			  AlignmentScaleShowing = 1 ;

			 // vertical plotting limits for alignment data
				 hi_y =  0.5 ;
				 lo_y = -0.5 ;

			 // put alignment ticks and scale on right
			SelectObject(hdc, hfnt1) ;
			if (UseScale == 2)
			SetBkColor(hdc, RGB(223, 223, 223)) ;
			else
			SetBkColor(hdc, RGB(192, 192, 192)) ;
			SelectObject(hdc, blackPen) ;

			 for ( u = -0.5 ; u <= 0.5 ; u += 0.1)
			 {
				yp = rcArc.bottom -
					(int)((double)ht * (u - lo_y) / (hi_y - lo_y)
					+ (double)ylmar) ;
				xp = D.right - 4 ;
				MoveToEx(hdc, xp, yp, NULL) ;
				xp = D.right + 2 ;
				LineTo(hdc, xp, yp) ;
				sprintf(buff, "%2.1f", u) ;
				TextOut(hdc, D.right + 4, yp - 4, buff, strlen(buff)) ;
			 }
				yp = rcArc.bottom -
					(int)((double)ht * (0.0 - lo_y) / (hi_y - lo_y)
					+ (double)ylmar) ;
				MoveToEx(hdc, D.left,  yp, NULL) ;
				  LineTo(hdc, D.right, yp) ;

			SelectObject(hdc, hgrk2) ;
			sprintf(buff, "a") ;
			TextOut(hdc,
				     D.right + 4,
					 D.bottom - (D.bottom + D.top) / 2,
					 buff, strlen(buff)) ;

			SelectObject(hdc, hfnt) ;

			// number of tick intervals in AstGP
			nd = (int)(floor(AstGP * SiDY / sitd) + 1.0) ;
			// the corresponding plotting time interval
			ival = AstGP / (double)nd ; 


		        for ( i = 1, inside = 0 ; i <= nd ; i++ )
		       {
				ep = i * ival + AstEp1 ;

			        update() ;

				xp = ep2xp(ep) ;
				
			if (xp >= xlmar && xp < (wd + xlmar))
			{
				++inside ;

			 Systemic(pSy, align->centre) ;

	 if (PlotAMot)  // Systemic Motion Alignment
	           {
				   SelectObject(hdc, bluePen) ;

			   // upper Envelope bound

				 s = 4 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (Sy.bSysAln[MOT] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

			   // lower envelope bound.
			   // this is just the negative of the upper

				 s = 5 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (-Sy.bSysAln[MOT] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

			  } // End PlotAMot()


	if (PlotSysMeanAlign)
			   {
				   SelectObject(hdc, ltbluePen) ;

				 s = 10 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (Sy.sysmeanalign - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

				 s = 16 ;	// bottom half
		        yp = rcArc.bottom -
			        (int)((double)ht * (-Sy.sysmeanalign - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

			   }

	if (PlotHSysMeanAlign)
			   {
				   SelectObject(hdc, dkbluePen) ;

				 s = 11 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (Sy.bSysAln[MBD] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;
				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

			   }

	if (PlotBSysAlign) // show the moon's as well
			   {
				   SelectObject(hdc, grayPen) ;

				 s = 12 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (Sy.bSysAln[MOO] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}
			   }

			   if (PlotSysAlOnSun) // Systemic alignment on Sun
			   {
				   SelectObject(hdc, purplePen) ;

				 s = 14 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (Sy.bSysAln[SUN] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}

				 s = 15 ;
		        yp = rcArc.bottom -
			        (int)((double)ht * (-Sy.bSysAln[SUN] - lo_y)/(hi_y - lo_y) + 
				          (double)ylmar) ;

				if (inside == 1)
				{
					MoveToEx(hdc, oxp[s]= xp, oyp[s] = yp, NULL) ;
				}
				else
				{
					MoveToEx(hdc, oxp[s], oyp[s], NULL) ;
					LineTo(hdc, oxp[s] = xp, oyp[s] = yp) ;
				}
			   }
			   }
  } // end for ( i = 1 ;.......
  inside = 0 ;
} // end of alignment options				  
