0a1,2
> #ifndef _HARVEST_H
> #define _HARVEST_H
2,3c4
< extern void	harvest(int period);
< extern void	derive_percentage_target(int period);
---
> #include "defs.h"
4a6,64
> #include "func.h"
> #include "road.h"
> #include "regen.h"
> 
> /*extern*/ void	harvest(int period);
> /*extern*/ void	derive_percentage_target(int period);
> static double harvest_adjacency(TIMBER_CLASS *timber_class, int period);
> static double calculate_green_up(AXSDEF *axs, TIMBER_CLASS *timber_class, int period);
> static double harvest_adjacency(TIMBER_CLASS *timber_class, int period);
> static void debug_display_agearea(AXSDEF *axs, char *where);
> static double calculate_old_growth(AXSDEF *axs, TIMBER_CLASS *timber_class, int period);
> 
> extern inline double harvest_adjacency(TIMBER_CLASS *timber_class, int period)
> {
> 	if (timber_class->parent_block->AdjacencyDelay > period_length[period]) return(0.0);
> 	return(timber_class->MerchArea);
> }
> 
> extern inline double calculate_green_up(AXSDEF *axs, TIMBER_CLASS *timber_class, int period) {
> 	double tmp;
> 	if (axs->Age<period_length[period]) {
> 		printf("\nWARNING: axs->age(%d) < PeriodLength(%d); Constraint will not be applied", axs->Age, period_length[period]);
> 		tmp = timber_class->MerchArea;
> 	 } else {
> 		tmp = (axs->BaseArea*axs->Percent/100.0)-func_area_lt(axs->AgeArea, axs->NumAgeAreaElements, axs->Age-period_length[period], period);
>         /*printf("\nBaseArea (calculate_green_up): %f", axs->BaseArea);
>         printf("\nPercent: %f", axs->Percent);
>         printf("\nAgeArea: %x", axs->AgeArea);
>         printf("\nAge: %d", axs->Age);*/
> 	}
> 	return(tmp);
> }
> 
> extern inline void debug_display_agearea(AXSDEF *axs, char *where) {
> 	int i;
> 	fprintf(ftrace, "\nBEGIN debug_display_agearea(%s)", where);
> 	for( i=0; i<axs->NumAgeAreaElements; ++i ) {
> 		if ( axs->AgeArea[i] > 0.0f ) {
> 			fprintf(ftrace, "\nAgeArea[%3d]: %8.2f", i, axs->AgeArea[i]);
> 		}
> 	}
> 	fprintf(ftrace, "\nEND debug_display_agearea(%s)\n", where);
> }
> 
> extern inline double calculate_old_growth(AXSDEF *axs, TIMBER_CLASS *timber_class, int period) {
> 	double marea, darea, areaabove, tmp;
> 	marea = func_area_ge(axs->AgeArea, axs->NumAgeAreaElements, axs->Age-period_length[period], period);
> 	darea = axs->BaseArea*axs->Percent/100.0;
> 
> 	areaabove = func_area_ge(axs->AgeArea, axs->NumAgeAreaElements, timber_class->age-timber_class->width+1, period);
> 	if (((marea-darea)>ROUND_ERROR)&&((marea-areaabove)>ROUND_ERROR)) {
> 		tmp = marea-darea;
> 	} else {
> 		tmp = areaabove-darea;
> 	}
> 
> 	return(tmp);
> }
> #endif
