Hi Bastien, > #+CONSTANTS is meant to be used only once on the file, not per table.
that's how I understood it. > When used several times, `org-table-formula-constants-local' was > defining the same constant several times, which is wrong. I fixed > this. I can confirm this is working now. > Let's take other problems one by one if you have time. Sure. Let's start with following tables and Org-mode version 8.0-pre (release_8.0-pre-144-g855dcf @ /home/ov/p/org-mode/lisp/): #+TITLE: Nutrition Facts #+CONSTANTS: b=100.0 j=4.182 #+TBLNAME: nf | Product | kJ | kcal | |-----------+------+------| | Bread | 1372 | 328 | | Butter | 3054 | 730 | | Marmalade | 926 | 221 | #+TBLFM: $3=$2/$j;%.0f | Product | g | kJ | kcal | |-----------+------+------+------| | Bread | 50.6 | 658 | 157 | | Butter | 11.5 | 150 | 36 | | Marmalade | 19.7 | 256 | 61 | |-----------+------+------+------| | | | 1064 | 254 | #+TBLFM: $3='(* $2 (/ (org-lookup-first $1 '(remote(nf,@I$1..@II$1)) '(remote(nf,@I$2..@II$2))) $b));N%.0f::$4=$3/$j;%.0f::@>$3..$4=vsum(@I..II) I'm reapplying formulas by pressing `C-c C-c' on the hash mark of the format line. The expected results are: | Product | g | kJ | kcal | |-----------+------+------+------| | Bread | 50.6 | 694 | 166 | | Butter | 11.5 | 351 | 84 | | Marmalade | 19.7 | 182 | 44 | |-----------+------+------+------| | | | 1227 | 294 | Let's take this apart: #+BEGIN_SRC emacs-lisp (values (* 50.6 (/ 1372 100.0)) (* 11.5 (/ 3054 100.0)) (* 19.7 (/ 926 100.0))) #+END_SRC #+RESULTS: | 694.2320000000001 | 351.21 | 182.422 | I was bitten myself by setting `b=100', which is an integer and led to the wrong result. But Org-mode still calculates as if `b' were an integer. But even replacing `$b' with `100.0' still gives wrong results (second and third line): | Product | g | kJ | kcal | |-----------+------+------+------| | Bread | 50.6 | 694 | 166 | | Butter | 11.5 | 158 | 38 | | Marmalade | 19.7 | 270 | 65 | |-----------+------+------+------| | | | 1122 | 269 | #+TBLFM: $3='(* $2 (/ (org-lookup-first $1 '(remote(nf,@I$1..@II$1)) '(remote(nf,@I$2..@II$2))) 100.0));N%.0f::$4=$3/$j;%.0f::@>$3..$4=vsum(@I..II) -- Oliver