diff --git a/asterix-doc/src/site/markdown/aql/functions.md b/asterix-doc/src/site/markdown/aql/functions.md
index af1e2e4..7b2fb03 100644
--- a/asterix-doc/src/site/markdown/aql/functions.md
+++ b/asterix-doc/src/site/markdown/aql/functions.md
@@ -1,5 +1,5 @@
 # Asterix: Using Functions #
-Asterix provides various classes of functions to support operations on string, spatial, and temporal data.  This document explains how to use these functions.
+Asterix provides various classes of functions to support operations on numeric, string, spatial, and temporal data. This document explains how to use these functions.
 
 ## Numeric Functions ##
 ### numeric-abs ###
@@ -7,11 +7,11 @@
 
         numeric-abs(numeric_expression)
 
- * Returns the absolute value of the argument.
+ * Computes the absolute value of the argument.
  * Arguments:
     * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.  
  * Return Value:
-    * The absolute value of the argument.
+    * The absolute value of the argument with the same type as the input argument, or `null` if the argument is a `null` value.
 
  * Example:
 
@@ -33,11 +33,11 @@
 
         numeric-ceiling(numeric_expression)
 
- * Returns the smallest value that is greater than or equal to the argument and is equal to an integer value. If the argument value is already equal to mathematical integer, then the result is the same as the argument.
+ * Computes the smallest (closest to negative infinity) number with no fractional part that is not less than the value of the argument. If the argument is already equal to mathematical integer, then the result is the same as the argument.
  * Arguments:
     * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.  
  * Return Value:
-    * The smallest value that is greater than or equal to the argument and is equal to a mathematical integer value.
+    * The ceiling value for the given number in the same type as the input argument, or `null` if the input is `null`.
 
  * Example:
 
@@ -59,11 +59,11 @@
 
         numeric-floor(numeric_expression)
 
- * Returns the largest value that is less than or equal to the argument and is equal to an integer value. If the argument is already equal to mathematical integer, then the result is the same as the argument. 
+ * Computes the largest (closest to positive infinity) number with no fractional part that is not greater than the value. If the argument is already equal to mathematical integer, then the result is the same as the argument. 
  * Arguments:
     * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.  
  * Return Value:
-    * The largest value that is less than or equal to the argument and is equal to a mathematical integer value.
+    * The floor value for the given number in the same type as the input argument, or `null` if the input is `null`.
 
  * Example:
 
@@ -85,11 +85,11 @@
 
         numeric-round(numeric_expression)
 
- * Returns the closest integer value to the argument. 
+ * Computes the number with no fractional part that is closest (and also closest to positive infinity) to the argument. 
  * Arguments:
     * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.  
  * Return Value:
-    * The value of the argument rounded to the nearest integer value.
+    * The rounded value for the given number in the same type as the input argument, or `null` if the input is `null`.
 
  * Example:
 
@@ -109,27 +109,31 @@
 ### numeric-round-half-to-even ###
  * Syntax:
 
-        numeric-round-half-to-even(numeric_expression)
+        numeric-round-half-to-even(numeric_expression, [precision])
 
- * Returns the value rounded towards the "nearest integer neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. Note that this is the rounding mode that minimizes cumulative error when applied repeatedly over a sequence of calculations.
+ * Computes the closest numeric value to `numeric_expression` that is a multiple of ten to the power of minus `precision`. `precision` is optional and by default value `0` is used.
  * Arguments:
-    * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.  
+    * `numeric_expression`: A `int8`/`int16`/`int32`/`int64`/`float`/`double` value.
+    * `precision`: An optional integer field representing the number of digits in the fraction of the the result   
  * Return Value:
-    * The value rounded towards the "nearest integer neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor.
+    * The rounded value for the given number in the same type as the input argument, or `null` if the input is `null`.
 
  * Example:
 
-        let $v1 := numeric-round-half-to-even(-2.5)
-        let $v2 := numeric-round-half-to-even(-1.5)
-        let $v3 := numeric-round-half-to-even(0.5)
-        let $v4 := numeric-round-half-to-even(1.5)
-        let $v5 := numeric-round-half-to-even(2.5)
-        return { "v1": $v1, "v2": $v2, "v3": $v3, "v4": $v4, "v5": $v5 }
+        let $v1 := numeric-round-half-to-even(2013)
+        let $v2 := numeric-round-half-to-even(-4036)
+        let $v3 := numeric-round-half-to-even(0.8)
+        let $v4 := numeric-round-half-to-even(float("-2013.256"))
+        let $v5 := numeric-round-half-to-even(double("-2013.893823748327284"))
+        let $v6 := numeric-round-half-to-even(double("-2013.893823748327284"), 2)
+        let $v7 := numeric-round-half-to-even(2013, 4)
+        let $v8 := numeric-round-half-to-even(float("-2013.256"), 5)
+        return { "v1": $v1, "v2": $v2, "v3": $v3, "v4": $v4, "v5": $v5, "v6": $v6, "v7": $v7, "v8": $v8 }
 
 
  * The expected result is:
 
-        { "v1": -2.0d, "v2": -2.0d, "v3": 0.0d, "v4": 2.0d, "v5": 2.0d }
+        { "v1": 2013, "v2": -4036, "v3": 1.0d, "v4": -2013.0f, "v5": -2014.0d, "v6": -2013.89d, "v7": 2013, "v8": -2013.256f }
 
 
 ## String Functions ##
