diff --git a/fsm.js b/fsm.js
index 4eb079a4fe850f5a8d21777415984ca83b3f01f1..cdbb4765a5644582fc7d3ec472a036fa8b7fa7e8 100644
--- a/fsm.js
+++ b/fsm.js
@@ -366,7 +366,7 @@ var fsm = function () {
 			    this.snapshots.pop();
 			    return;
 			}
-			r = num ** 0.5;
+			r = Math.pow(num, 0.5);
 		    	this.numberStack.push(r);
 			debug("trail push " + [keyName, shortKeyName(keyName), r]);
 			this.trail.push([shortKeyName(keyName), r]);
@@ -398,7 +398,7 @@ var fsm = function () {
 			}
 		    	break;
 		    case keyNames.power:
-			if (! this.doBinaryOperator(keyName, (lhs, rhs) => lhs ** rhs)) {
+			if (! this.doBinaryOperator(keyName, (lhs, rhs) => Math.pow(lhs, rhs))) {
 			    return;
 			}
 		    	break;
diff --git a/operational b/operational
index 7fe2d755887031bb17e7217ee4e6e2a7daa4869f..87ac929dfe6622cd2b1dcba49648ceb8591b36a0 100644
--- a/operational
+++ b/operational
@@ -82,6 +82,9 @@ doesn't work with <td> in firefox.
 
 ** 2017-01-26 make it work offline, add sw.js
 * done                                                                :entry:
+** 2017-01-27 bug: ** is not supported in firefox.
+use Math.pow() instead.
+
 ** 2017-01-27 accept keyboard event as well.		     :low:featurereq:
 - num0 to num9
 - dot