diff --git a/README.md b/README.md
index 232d5a503f97e55591cbdeac3a6e266d015a3a65..e6a2736322c8124cc58b549ae8eb2e28f1dfa46a 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,12 @@ These are stepper drivers! They run:
 
 The hardware is set up to run on the 'UCBus', a synchronous embedded protocol that establishes a bus clock *and* data lines on one RS485/UART Phy. Details are not documented anywhere ATM, but it w o r k s. 
 
+## Closed Loop
+
+Circuits have a land for an AS5147P encoder, with which they can run closed-loop stepper control:
+
+![cl](log/2021-02-25_cl-step-perf.mp4)
+
 ## Melted Version V02
 
 I revisioned this recently to skip the module and just build the whole circuit on one board. Schematic is identical to V01, but now is much smaller (can fit on a NEMA14 size motor) and all components are SMT on one side, i.e. the AS5047P is on the same side as the H-Bridges, Micro etc. 
diff --git a/controller/client/clStepClient.js b/controller/client/clStepClient.js
index 6517171a9962233a48ae85a22474163b175478a2..9b2b74790815a743e37e593a1bcdb4e70a6fd2bc 100644
--- a/controller/client/clStepClient.js
+++ b/controller/client/clStepClient.js
@@ -198,7 +198,7 @@ pidSetBtn.onClick(() => {
 
 let angleRandoBtn = new Button(10, 400, 94, 14, 'targ')
 angleRandoBtn.onClick(() => {
-  let targ = Math.random() * 200 - 100
+  let targ = Math.random() * 360
   vm.setTarget(targ).then(() => {
     angleRandoBtn.good(`${targ.toFixed(3)}`, 250)
   }).catch((err) => {
@@ -219,7 +219,7 @@ angleWrapBtn.onClick(() => {
 
 // units per revolution
 
-let uprVal = new TextInput(10, 460, 100, 20, '40')
+let uprVal = new TextInput(10, 460, 100, 20, '59.6929')
 
 let uprBtn = new Button(10, 490, 94, 14, 'upr')
 uprBtn.onClick(() => {
diff --git a/log/2021-02-25_cl-step-perf.mp4 b/log/2021-02-25_cl-step-perf.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..3a2c6baa544f4f5d21026fb6feab425ceab21316
Binary files /dev/null and b/log/2021-02-25_cl-step-perf.mp4 differ
diff --git a/log/cl-step-control-log.md b/log/cl-step-control-log.md
index 8de71e11a38cc220fb38330b9e7dda4fa68b604a..4e282641a8913b19d9e04405e8dc4a4fc8d856b6 100644
--- a/log/cl-step-control-log.md
+++ b/log/cl-step-control-log.md
@@ -1405,4 +1405,10 @@ OK, all seems sound now. So tomorrow would be about setting this up in a 'real s
 - match vm api, 
 - build clank-stretch 
 - put it on the bus, check if all commands can still op. through the bus: this is higher bandwidth, check for drops etc, maybe you have to fix those now
-- configure to grab positions from the bus, you'll be mixing closed- and open-loop motors not irregularely. 
\ No newline at end of file
+- configure to grab positions from the bus, you'll be mixing closed- and open-loop motors not irregularely. 
+
+## 2021 02 25 
+
+FWIW I made a demo of this today, and it looks pretty good:
+
+![perf](2021-02-25_cl-step-perf.mp4) 
\ No newline at end of file