Changes in Version 1.5-0

  o new $.zoo and $<-.zoo methods

  o read.zoo now passes format and tz to FUN if they are specified.  If
    FUN is not specified but tz and format specified then POSIXct translation 
    is done with respect to the specified format string.

  o months.yearmon, quarters.yearmon, cycle.yearmon methods added

  o months.yearqtr, quarters.yearqtr, cycle.yearqtr methods added

  o as.yearqtr.character now accepts %q and default formats are
    "%Y Q%q", "%Y q%q" and "%Y-%q".

  o yearqtr.factor and yearmon.factor added

  o as.yearmon.yearqtr now has frac argument consistent with as.Date.yearmon

  o format.yearqtr and as.character.yearqtr performance speedup for the
    common case of default format.


Changes in Version 1.4-2

  o The processing of regular series in aggregate.zoo()
    was changed. By default, a regular series is only
    created if the original series was regular. Otherwise,
    a regular series is only created if indicated (by
    setting argument regular = TRUE or by supplying a
    specific frequency).

  o zoo FAQ vignette added

  o axis.yearqtr and axis.yearmon improved. They no longer
    use axis.Date.
    
  o as.yearmon.character accepts "%Y-%m" default format (as well 
    as prior default of "%Y-%m-%d")

  o new summary() methods for yearmon/yearqtr objects which
    simply report the summary of the underlying numeric vector.

  o na.locf.default now uses fromLast= (consistent with the R 
    duplicated function). It is similar to the rev= argument
    (which will be deprecated).

  o comparisons between yearmon variables and character variables
    that can be coerced to yearmon via as.yearmon now work.  This 
    also lets character variables be used in start= and end= 
    arguments of window.zoo for zoo series with a yearmon index
    (since window.zoo already allows such usage for any index class 
    that can be compared to character).  Similarly for yearqtr.


Changes in Version 1.4-1

  o replaced by() calls by tapply() due to fixes in R
    2.6.1-patched that caused errors in plot.zoo().
    

Changes in Version 1.4-0

  o added a write.zoo() function that writes zoo series to
    a text file via write.table(). The index is included in
    the first column so that it can be easily read again
    using read.zoo().

  o read.zoo() has a new argument index.column (default: 1)
    which can be used to specify in which column of a data
    file the index/time is stored.

  o rapply() was removed from zoo - after being deprecated
    since zoo 1.2-0 (and R 2.4.0) and replaced by rollapply().

  o improved str() method for "zoo" and "zooreg" series, now
    gives explicit information about class, start and end,
    as well as data, index (and frequency).
    
  o zoo() now has a default first argument like ts() has.
    By default, zoo() is now zoo(NULL) and returns an empty
    series. This differs somewhat from the default ts()
    and zooreg() that return ts(NA) zooreg(NA), respectively.

  o added ... arguments to the as.POSIXct and as.POSIXlt
    methods
    
  o implementation of as.Date.numeric() has been modified:
    being backward compatible with the old zoo:::as.Date.numeric().
    It now matches the new (2.7.0 to be) base:::as.Date.numeric(),
    but also sets a default "origin" argument (1970-01-01).

  o plot.type argument of plot.zoo() now chooses its default 
    value via the screen argument.


Changes in Version 1.3-2

  o merge.zoo() has been improved so that unnecessary checking of
    frequencies is avoided for "zoo" objects.


Changes in Version 1.3-1

  o as.yearmon() can take format arguments that do not involve day,
    e.g. as.yearmon("2007-01", "%Y-%m")

  o added as.data.frame() methods for "yearmon" and "yearqtr"
    objects
    

Changes in Version 1.3-0

  o checking for non-unique index entries has been improved:
    zoo() throws a warning if a series with non-unique index entries
    is created. merge() gives a more useful error message.

  o inconsistencies when checking for regularity of series have been
    resolved: is.regular(), frequency(), frequency<-() etc. all behave
    consistently now.

  o custom panel functions in plot.zoo can now refer to 
    parent.frame()$panel.number to determine the current panel. Also
    added an example of this to ?plot.zoo.

  o read.zoo() will behave consistently when the file contains no data.
  
  o column names (if any) are checked now in rbind.zoo(), producing a
    similar behaviour as in rbind.data.frame()


Changes in Version 1.2-2

  o the order of arguments (... now come after FUN) in rollapply has
    been changed to allow unnamed additional arguments to be specified
    for FUN. Previously they had to be named.

  o bug in as.ts.zooreg fixed

Changes in Version 1.2-1

  o One of the examples on ?xyplot.zoo does not run with the
    R 2.4.0 lattice. It is currently placed in \dontrun{}
    (see comments in ?xyplot.zoo).


Changes in Version 1.2-0

  o rapply() was re-named to rollapply() because from R 2.4.0 on,
    base R provides a function rapply() for recursive (not rolling)
    application of functions, which was already described in the Green
    Book. zoo::rapply() still exists for backward compatibility, however,
    it is flagged as deprecated and now dispatches to rollapply() methods.

  o added methods for xyplot() from package "lattice" for classes "zoo",
    "ts", "its". These functions are still under development and the
    interface and functionality might be modified/extended in future
    releases.
  
  o new function make.par.list() (which was previously a local function
    parm() in zoo's plot() method) for processing named argument lists.
    Useful in plotting routines like the plot() and xyplot() methods,
    see ?make.par.list.

  o subscripting by a "zoo" object whose data is logical is now defined, e.g.
      z <- zoo(1:10); z[z > 3] 
    However, assignment such as
      z[z > 3] <- 2 * z[z > 3]
    does not work.
  
  o fixed a bug in zoo() when ordered factors are supplied ("ordered"
    class was dropped)

  o fixed bug in subscripting for drop = TRUE and length of result is 1

  o fixed bug in na.trim(x, "right")

  o all= argument of merge.zoo is coerced to logical so one can do this:
    merge(zoo(2:4, 2:4), zoo(1:3), all = 0:1)


Changes in Version 1.1-1

  o added na.spline() generic and default method for replacing
    NAs via cubic spline interpolation
    
  o rbind() method now exported explicitly again


Changes in Version 1.1-0

  o added a NAMESPACE, many S3 methods are not exported explicitly
    anymore

  o new argument `regular' in read.zoo() which is set to FALSE. Only if
    set to TRUE the series read is coerced to "zooreg" (if possible), 
    which was the previous default behaviour.
    
  o suppressWarnings() was added in is.regular() and frequency() functions
    which try() to convert indexes to numerics which might lead to errors
    or warnings and NAs (e.g., for characters), both should be fully suppressed
    now.


Changes in Version 1.0-7

  o added a `...' argument to as.data.frame() method for
    complying with R 2.4.0

  o improved handling of `by' argument in aggregate() method


Changes in Version 1.0-6

  o ?zoo now explicitly points out that the index of 
    zoo objects should have unique observations (aka 
    time stamps).
    
  o The summary() was fixed to work also with duplicated
    indexes.
    
  o scale() method added.

  o lines(x, y, ...) now supported.

  o points added.

  o -.yearmon and -.yearqtr added.
 
  o axis.yearmon and axis.yearqtr added.

  o Axis.yearmon and Axis.yearqtr added.

  o na.trim generic and default method added.

Changes in Version 1.0-5

  o added a `y' argument to plot.zoo() that allows to
    generate scatter plots of univariate "zoo" series
    (just as plot.ts(x, y = NULL, ...) does)
    
  o fixed the usage of %in% in the window() methods,
    now call MATCH() (rather than match()) directly.


Changes in Version 1.0-4

  o added a `rev' argument to na.locf() which allows to
    eliminate NAs by NOCB (next observation carried backward).


Changes in Version 1.0-3

  o added a barplot.zoo() method

  o fixed frequency.zoo() which returned NA instead of NULL
    for indexes of class "character"

  o added an example to zoo-quickref for querying daily
    exchange rates from oanda.com via get.hist.quote().
    This contains a worked example how to omit weekends
    from daily series.
    
  o added an na.pad argument to diff.zoo() method


Changes in Version 1.0-2

  o Small enhancements of plot.zoo()

  o Bug fixes in na.locf.default(), as.data.frame.zoo(),
    lag.zoo(), lag.zooref().
    

Changes in Version 1.0-1

  o Convenience function read.zoo() for reading "zoo" series directly
    from plain text files.
    
  o New vignette `zoo-quickref' with a quick reference particularly
    aimed at (daily) financial series (contributed by Ajay Shah).

  o plot.zoo now has screens=, widths= and heights= arguments for controlling
    which series are plotted in which graphs and widths and heights of graphs.
    The ylim= argument has been enhanced.

  o argument k= can be vector in lag.zoo (suggested by Roger Koenker)

  o na.locf.default bug fixed


Changes in Version 1.0-0

  o This release accompanies the publication in the Journal of Statistical
    Software ("zoo: S3 Infrastructure for Regular and Irregular Time Series",
    JSS, 14(6), 1-27) that essentially corresponds to the vignette contained
    in the package. Please use this paper to cite zoo in publications.

  o aggregate.zoo allows a function as the argument for computing
    the aggregation groups. The return value is coerced to "zooreg"
    if it is.regular.

  o extended NA handling for lists and data.frames: na.locf.data.frame,
    na.locf.list, na.contiguous.data.frame, na.contiguous.list
    
  o pair notation, e.g. c(1985,2), for "zooreg" series is now also
    allowed in window.zoo and window<-.zoo.

  o fixed bug in rapply: result was transposed when by.column = FALSE and
    a non-scalar function FUN was used.


Changes in Version 0.9-9

  o regular "zoo" series: objects of class "zooreg" (inheriting from "zoo")
    can be used to store strictly regular series (similar to "ts" objects)
    or series with an underlying regularity (as before but with observations
    omitted). They have a frequency attribute that can be used for conversion
    between "zoo" and "ts". The function is.regular() can be used for 
    checking the regularity of a series.

  o improved merge() method: merge.zoo now accepts non-zoo arguments
    (other than first) if all non-zoo args have the same NROW value
    as the first argument (or are scalar). In that case the non-zoo
    args are given the index of the first series. Scalars are added
    for the full index of the merged series.

  o merge() zoo can now optionally return a "data.frame" that contains
    the numeric columns as "zoo" series and the "zoo" objects created
    from factors converted back to "factor".
    
  o [.zoo allows now indexing using observations from the index scale
    (and not only observation numbers).

  o rapply, rollmean, rollmax, rollmedian to perform rolling analyses

  o extended functionality to plot.zoo type argument

  o when plot.zoo used with one series list(...) can be omitted from 
    various plotting parameter arguments

  o print.zoo documentation fix for R 2.1.0

  o yearmon and yearqtr datetime classes

  o head.ts, tail.ts

  o c.zoo, range.zoo

  o coredata.default, coredata.ts


Changes in Version 0.9-1

  o new generic functions ORDER() and MATCH() (with
    order() and match() as the default) so that zoo()
    can handle  arbitrary index/time classes when
    suitable methods for the generic function c(),
    length(), order(), match() and subsetting [, are
    supplied.

  o improved printing of "zoo" objects and added
    a summary() method.
    
  o extended coercion functionality to and from
    "zoo" objects. "its" objects can be coerced to
    "zoo" and vice versa. "zoo" objects can be 
    coerced to vector, matrix, data.frame or list.
    
  o added functionality to extract/assign to
    the coredata() of a "zoo" object.
    
  o added/improved functionality to extract/assign
    to the window() of a "zoo" object.
    
  o added/improved functionality to extract/assign
    to the index() or time() of a "zoo" object.
    
  o added lag(), diff(), start(), end(), head(),
    tail() methods.

  o improved plot.zoo() by more flexible expansion
    of plotting parameters such as col, lty and pch.

  o added a cbind() method for "zoo" objects (almost
    synonymous with merge())
  
  o NA handling for "zoo" objects via na.omit(),
    na.contiguous(), na.approx() and na.locf().

  o na.locf() generic function with default method (suitable
    for "zoo" objects) which implements Last Observation
    Carried Forward.
  
  o na.approx() generic function with default method (suitable
    for "zoo" objects) which implements elimination of NAs
    by interpolation.
  
  o added mathematical methods: group generic functions
    for "zoo" objects, t(), cumsum(), cumprod(), cummin(),
    and cummax().

  o added model.frame.AsIs and model.frame.zoo to support
    regression based on zoo objects, in particular with lm()
    (but also many other regression functions).

  o Zero length vector zoo objects may have non-zero index vectors 
    intended to be used in merge to extend zoo objects. zoo
    changed to enable the creation of such objects by omitting
    first argument.

  o added a vignette explaining the new features
  

Changes in Version 0.2-0

  o zoo() now has defaults for both arguments x and order.by,
    which mimic the default behaviour of ts().

  o added new aggregate.zoo() method for computing summary
    statistics of "zoo" objects along a coarser index grid.

  o improved merge.zoo() in three directions:
    1. handling of "zoo" objects with zero columns,
    2. naming of columns in the merged "zoo" object
       which behaves more like merge.data.frame();
       a corresponding suffixes argument has also been added,
    3. introced a fill argument which allows to fill gaps
       by another value than NA.
       
  o improved documentation with extended examples

