*! NJC 2.0.0 19 January 2004 * NJC 1.3.1 1 January 1999 * NJC 1.3.0 16 December 1998 * NJC 1.2.0 15 May 1997 * NJC 1.1.0 30 September 1996 * lowess for circular data program circxlowess version 8.0 syntax varlist(min=2 max=2) [if] [in] /// [, Pad(real 180) XMIN(real 0) XMAX(real 360) *] tokenize `varlist' args y x marksample touse qui count if `touse' if r(N) == 0 error 2000 tempvar expand local np1 = _N + 1 preserve qui expand 1 + (`x' <= `xmin' + `pad' | `x' > `xmax' - `pad') gen byte `expand' = _n >= `np1' qui if _N >= `np1' { /* need to check that expansion took place */ replace `x' = /// cond(`x' <= `xmin' + `pad', `x' + `xmax' - `xmin', /// `x' - `xmax' + `xmin') in `np1'/l } if `xmin' == 0 & `xmax' == 360 { local xla `"xla(0 "0" 90 "90" 180 "180" 270 "270" 360 "360")"' } lowess `varlist' if `touse', `xla' xli(`xmin' `xmax') `options' end