REBOL [
    Title: "Age"
    Date: 1-Sep-2002
    Name: 'Age
    Version: 3.0.0
    File: %age.r
    Author: "Andrew Martin"
    Needs: [%Days%20Per%20Month.r]
    Purpose: "Calulates Age in Years, Months & Days."
    eMail: Al.Bri@xtra.co.nz
    Web: http://valley.150m.com
    Acknowledgements: "Ladislav Mecir"
    library: [
        level: 'beginner
        platform: []
        type: 'function
        domain: 'math
        tested-under: none
        support: none
        license: none
        see-also: none
    ]
]

Age?: function [
	"Calulates Age in Years, Months & Days."
	Birth [date!]	"Date of Birth."
	Date [date!]	"'now or future date."
	] [Years Months Days New] [
	if Date < Birth [
		return Age? Date Birth
		]
	Days: Date/day - Birth/day
	if negative? Days [
		Months: Birth/month + 1
		Years: Birth/year
		if Months > 12 [
			Months: 1
			Years: Years + 1
			]
		New: to date! reduce [1 Months Years]
		Days: New - Birth + Date/day - 1
		Birth: New
		]
	Months: Date/month - Birth/month
	Years: Date/year - Birth/year
	if negative? Months [
		Months: Months + 12
		Years: Years - 1
		]
	make object! compose [Years: (Years) Months: (Months) Days: (Days)]
	]