#include <stdio.h>
#include <math.h>

double atof();
double pow();

main(argc, argv)
int argc;
char *argv[];
{
char tmp[200];
double temp = 0;
double bprice = 0;
double par = 0;
double interest = 0;
double pvalue1 = 0;
double pvalue2 = 0;
double marketi = 0;
double nperyear = 2;
double length = 0;

if ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P')))
	{
	 fprintf(stdout,"Enter par value <$>.............................. ");
	 fgets(tmp,100,stdin);
	 par = atof(tmp);
	 fprintf(stdout,"Enter stated interest rate....................... ");
	 fgets(tmp,100,stdin);
	 interest = atof(tmp) / 100;
	 fprintf(stdout,"Enter life of bond <years>....................... ");
	 fgets(tmp,100,stdin);
	 length = atof(tmp);
	 fprintf(stdout,"Enter bond purchase price <$>.................... ");
	 fgets(tmp,100,stdin);
	 bprice = atof(tmp);
	 fprintf(stdout,"Enter market interest rate....................... ");
	 fgets(tmp,100,stdin);
	 marketi = atof(tmp) / 100;
	 fprintf(stdout,"Enter number of interest payments per year....... ");
	 fgets(tmp,100,stdin);
	 nperyear = atof(tmp);
	 fprintf(stdout,"\n");
	}
else if ((argc == 2) && ((argv[1][0] == 'v') || (argv[1][0] == 'V')))
	{
	 fprintf(stdout,"bond: Version 1.00 \n");
	 fprintf(stdout,"      Copyright 1987 by Michael Brochstein\n");
	 fprintf(stdout,"      All rights reserved.\n");
	}
else if (argc != 7) 
	{
	 fprintf(stderr,"Usage: bond p \n");
	 fprintf(stderr,"       bond v \n");
	 fprintf(stderr,"       bond <par value> <stated interest rate> ");
	 fprintf(stderr,"<life of bond-years>\n");
	 fprintf(stderr,"            <bond price> <market interest rate>\n");
	 fprintf(stderr,"            <number of interest payments per year>\n");
	}
else if (argc == 7)
	{
	 par = atof(argv[1]);
	 interest = atof(argv[2]) / 100;
	 length = atof(argv[3]);
	 bprice = atof(argv[4]);
	 marketi = atof(argv[5]) / 100;
	 nperyear = atof(argv[6]);
	}

if ((argc == 7) 
	|| ((argc == 2) && ((argv[1][0] == 'p') || (argv[1][0] == 'P'))))
	{
	 temp = (par * interest * length) + par - bprice;
	 fprintf(stdout,"Total interest payments\n");
	 fprintf(stdout,"over life of bond................. %12.2f\n",
		par * interest * length);
	 fprintf(stdout,"Difference between par value\n");
	 fprintf(stdout,"and purchase price................ %12.2f\n",
		par - bprice);
	 fprintf(stdout,"                                  -------------\n");
	 fprintf(stdout,"      Net return to bondholder:    %12.2f\n\n", temp);
	 fprintf(stdout,"Average return per year........... %12.2f\n\n",
		temp / length);
	 fprintf(stdout,"Approximate annual yield.......... %6.2f %%\n\n",
		100 * (temp / length) / bprice);
		
	  
	 fprintf(stdout,"- Using present value analysis techniques;\n\n");

	 pvalue1 = par / pow(1+(marketi/nperyear),(nperyear*length));

	 fprintf(stdout,"Present value of Par value of bond.... %12.2f\n",
		pvalue1);

	 pvalue2 = 1 / pow(1+(marketi/nperyear),(nperyear*length)); 
	 pvalue2 = (1 - pvalue2) / (marketi/nperyear);
	 pvalue2 = (interest * par / nperyear) * pvalue2;

	 fprintf(stdout,"Present value of the annuity of\n");
	 fprintf(stdout,"the interest payments................. %12.2f\n",
		pvalue2);
	 fprintf(stdout,"                                   ");
	 fprintf(stdout,"   -------------\n");
	 fprintf(stdout,"     TOTAL PRESENT VALUE OF BOND:      %12.2f\n",
		pvalue1+pvalue2);

	}
}
