Evaluating expressions inside conditionals works in elisp ``` (defun usd(amount currency) (if (string= currency "USD") amount (/ amount 3.75) ) ) (usd 123 "USD") => 123 (usd 123 "SAR") => 32.8 ``` But doesn't work inside an org table ``` | amount | currency | USD | |--------+----------+--------| | 123 | USD | 123 | | 54 | USD | 54 | | 223 | SAR | #ERROR | | 54 | USD | 54 | | 52 | SAR | #ERROR | #+TBLFM: $3='(usd $1 $2) ``` Why would this error happen? I could solve this problem by having an intermediate column ``` | amount | currency | intermediate | USD | |--------+----------+--------------+-------| | 123 | USD | 1 | 123 | | 54 | USD | 1 | 54 | | 223 | SAR | 0.26667 | 59.47 | | 54 | USD | 1 | 54 | | 52 | SAR | 0.26667 | 13.87 | #+TBLFM: $3='(if (string= $2 "USD") 1 .26667)::$4=round($1*$3,2) ``` But that makes the table unnecessarily bigger.