#+END EXAMPLE I have a question for it. In the line starting with "$1->", why was 0 substituted into $1? Unfortunatelly, I had to suspend this tracing, because I need much more time to edebug `org-table-eval-formula' with my capablitliy. If you are interested in, feel free to go further. HTH, IP Oliver Ve$(D+-(Bern$(D+?(Bk writes: > 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)